【发布时间】:2013-09-23 17:55:10
【问题描述】:
如何动态创建结构数组?
struct arr
{
int a;
float b;
} *p;
p = (struct arr *)malloc(2*sizeof(struct arr));
for (i = 0; i < 2; i++)
{
scanf("%d %f", &p[i]->a, &p[i]->b);
}
for (i = 0; i < 2; i++)
{
printf("%d %f", p[i]->a, p[i]->b);
}
此代码不起作用并产生错误。我将 scanf 编辑到这个,
scanf("%d %f",&(&p[i])->a,&(&p[i])->b);
和 printf 到这个,
printf(("%d %f",(&p[i])->a,(&p[i])->b);
它成功了,但我不知道到底发生了什么。
【问题讨论】:
-
sizeof(2 * struct arr)无效。你想要2* sizeof(struct arr) -
好消息@mbratch。这也会导致 UB。