回 帖 发 新 帖 刷新版面

主题:为什么会出现这个现象

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个回复)

沙发


是因为你没有为指针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。

板凳

上面是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;

我来回复

您尚未登录,请登录后再回复。点此登录或注册