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
,程序崩潰。爲什麼gcc說這是一個「無效的初始值設定項」?
爲什麼數組元素的類型爲Foo*
而不是Foo
?爲什麼程序崩潰?
'爲什麼數組元素Foo *'的類型 - 當然,因爲您聲明它們是與'Foo * arr []' –