C语言中指针的读取问题

zhumengxiao 2009-12-24 03:34:56
void initArray()
{
struct node obj2;
int *Nsize;//新开辟的空间
int Ndata=011;//不满足现有空间的那个元素
obj.size=ADDSIZE;//先分配ADDSIZE(5)个空间大小的数组来存放数据
obj.totalNumber=0;
obj.data=(int*)malloc(obj.size*sizeof(int));//为数组分配内存空间
while(Ndata!=END)
{
printf("请输入数据: ");
scanf("%d", &Ndata);
if(obj.totalNumber==obj.size)
{
Nsize=addSize(obj.size);//新开辟空间
obj2=obj; free(obj2.data);//释放原来内存空间
copyArray(obj,Nsize,obj.totalNumber,Ndata);//拷贝数组
obj.totalNumber++;
}
if (Ndata==END) break;
obj.data[obj.totalNumber]=Ndata;//将新输入的数据放入原来的数组中
//obj.(*data) =Ndata;
//data++;
obj.totalNumber++;
}
obj.totalNumber--;//去掉结束标志
inputEnd();//询问用户接下来的操作
}
这是程序的一部分,运行时能够正常输入数据,但是无法读到data中
...全文
138 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
angel_su 2009-12-24
  • 打赏
  • 举报
回复
addSize后没见你更新size/data成员,这样继续输入不行吧...觉得addSize应该设计成传入&obj,把malloc,拷贝和更新size/data工作完成后才返回,init也不写obj.data=(int*)malloc...free...都改在addSize里做,这样看起来条理清晰点。
x____ 2009-12-24
  • 打赏
  • 举报
回复
你应该 用memset 重置data的数据。
james_hw 2009-12-24
  • 打赏
  • 举报
回复
obj2=obj; free(obj2.data);//释放原来内存空间
copyArray(obj,Nsize,obj.totalNumber,Ndata);//拷贝数组

obj的空间被释放后,由copyArray来分配空间?

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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