#include <stdio.h>
#include <stdlib.h>
struct record{
int a;
int b;
};
int create(struct record *p, int num)
{
p = new struct record[num];
if (!p)
return -1;
else
return 0;
}
int test()
{
struct record *p = null;
int i;
int num;
printf("0x%08x\n", p);
scanf("input record num:%d", &num);
if (create(p, num) < 0)
return -1;
printf("0x%08x\n", p);
for (i = 0; i < num; i++) {
p[i].a = 0;
p[i].b = 0;
}
return 0;
}
int main(void)
{
test();
getchar();
return 0;
}
程序改错,指针理解,初一看开以为是对的呢。再细看有问题.
自己调试后发现有问题,后面的指针一直为NULL,说明函数没有将指针传出来。
struct record* p =NULL;
int create(struct record *p, int num) // 参数传递指针可以传入修改,相当吧指针值复制传入。是值传入的。 不能传出。
如果要传出去,每个变量,引用该变量,改变了的指针
可以改为int create(struct record **p, int num) 或者 int create(struct record * &p, int num)