结构初始化问题

octopus666 2008-11-28 12:11:22

#include "stdafx.h"
#include "iostream"
#include "stdlib.h"
#define ListSize 100
typedef int DataType;
typedef struct
{
DataType data[ListSize];
DataType length;
}SeqList;


void InsertList(SeqList *L, DataType x, int i)
{
int j;
if(i<1 || i > L->length+1)
{printf("postion error");
exit(1);}
if(L->length > ListSize)
{printf("overflow");
exit(1);
}
for(j = L->length-1; j > i-1; j--)
L->data[j+1] = L->data[j];
L->data[i-1] = x;
L->length++;

}
int _tmain(int argc, _TCHAR* argv[])
{
SeqList *L = NULL;

L->length = 5;/*中的 0x00411518 处未处理的异常: 0xC0000005: 写入位置 0x00000190 时发生访问冲突*/在这句话出现这个问题
for(int i = 1; i <= L->length; i++)
L->data[i-1] = i;
for(int j = 0; j < L->length; j++)
printf("%d",L->data[j]);
InsertList(L,6,2);
for(int k = 0; k < L->length; k++)
printf("%d",L->data[k]);

system("pause");
return 0;
}


实现数组插入某某数字
L->length 有别的赋值方式吗
...全文
67 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
就呆在云上 2008-11-28
  • 打赏
  • 举报
回复
#include "iostream"
#include "stdlib.h"
#define ListSize 100
typedef int DataType;
typedef struct tt
{
DataType data[ListSize];
DataType length;
tt() :length(5) {}
}SeqList;


void InsertList(SeqList *L, DataType x, int i)
{
int j;
if(i<1 || i > L->length+1)
{printf("postion error");
exit(1);}
if(L->length > ListSize)
{printf("overflow");
exit(1);
}
for(j = L->length-1; j > i-1; j--)
L->data[j+1] = L->data[j];
L->data[i-1] = x;
L->length++;

}
int main(int argc, char* argv[])
{
SeqList *L = new SeqList;
std::cout << L->length << std::endl;
//L->length = 5;
/*中的 0x00411518 处未处理的异常: 0xC0000005:
写入位置 0x00000190 时发生访问冲突在这句话出现这个问题*/
for(int i = 1; i <= L->length; i++)
L->data[i-1] = i;
for(int j = 0; j < L->length; j++)
printf("%d",L->data[j]);
InsertList(L,6,2);
for(int k = 0; k < L->length; k++)
printf("%d",L->data[k]);

return 0;
}


在结构体里面放一个默认构造函数,然后分配空间,自然会调用他的默认构造函数,length也自动被设置
glacier3d 2008-11-28
  • 打赏
  • 举报
回复
SeqList *L = NULL;
这L等于0,当然不能赋值了。

应该先new一个
L = new SeqList;
chenzhp 2008-11-28
  • 打赏
  • 举报
回复
L都没有分配空间,当然不能够对其内部变量赋值

SeqList *L = (SeqList *)malloc(sizeof(SeqList));

65,211

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧