typedef struct
{
int blah;
int bleh;
} Foo;
typedef struct
{
int a;
int b;
Foo* arr[];
} Bar;
int main(int argc, char **argv)
{
Bar* bar = malloc(sizeof(Bar) + sizeof(Foo) * 5);
Foo foo1 = bar->arr[0];
return 0;
}
在foo1
分配的行上,我得到“无效的初始化程序”。如果我将类型更改为Foo*
,它将编译。但是如果我这样做foo1->blah = 3
了,程序就会崩溃。
为什么数组元素的类型是Foo*
而不是Foo
?为什么程序会崩溃?