主题:为什么会出现这个现象
kelvinken
[专家分:0] 发布于 2006-11-10 08:25:00
int *a;
int i;
for(i=0;i<32;i++)
*(a+i)=i;
for(i=0;i<32;i++)
Memo1->Lines->Add(AnsiString(*(a+i)));
我刚才在BCB里写了这段程序,怎么运行的时候它说有冲突,哪里错了呀
是不是数组这样用不对
回复列表 (共2个回复)
沙发
gebowangzm [专家分:480] 发布于 2006-11-17 16:18:00
是因为你没有为指针a申请空间。正确的代码如下:
1、在Unit.h中加上 #include <malloc.h>;
2、将你的原代码改写为:
int *a;
int i;
a=(int *)malloc(sizeof(int)*32);
for(i=0;i<32;i++)
*(a+i)=i;
for(i=0;i<32;i++)
Memo1->Lines->Add(AnsiString(*(a+i)));
free(a);
3、一切OK。
板凳
gebowangzm [专家分:480] 发布于 2006-11-26 22:23:00
上面是DOS下编程常用的方法。
面向对象面程的C++提倡用下面的方法:
int *a;
int i;
a=new int[32];
for(i=0;i<32;i++)
*(a+i)=i;
for(i=0;i<32;i++)
Memo1->Lines->Add(AnsiString(*(a+i)));
delete a;
我来回复