[英]Why can't I initialize an array within a nested structure?
我想創建一個新結構,它是兩個相同結構的組合。 這些子結構中的每一個包括一個標量雙和三維陣列。 但是,當我嘗試初始化結構時,我在嘗試給數組賦值時遇到錯誤。
我沒有編譯錯誤,但是當我嘗試在嵌套結構中查看數組的值時,我看到非常完全錯誤的瘋狂數字。
你知道我在做錯了什么嗎?
typedef struct quackStruct {
double s;
double v[3];
} quackStruct;
typedef struct dualquackStruct {
quackStruct q1;
quackStruct q2;
} dualquackStruct;
int main() {
quackStruct duck1 = { .s = 0.0, .v = { 0.5,4.0,2.1 } };
quackStruct duck2 = { .s = 0.85, .v = { 20.0, 10.0, -5.0 } };
/* I tried this... but it didn't work
dualquackStruct ducks = { duck1, duck2 }; */
/* this didn't work either */
dualquackStruct ducks = { .q1.s = 0.0, .q1.v = { 0.5, 4.0, 2.1 },
.q2.s = 0.85, .q2.v = { 20.0, 10.0, -5.0 } };
printf("%f\n", ducks.q1.s);
printf("%f\n", ducks.q1.v[0]);
printf("%f\n", ducks.q1.v[1]);
printf("%f\n", ducks.q1.v[2]);
printf("%f\n", ducks.q2.s);
printf("%f\n", ducks.q2.v[0]);
printf("%f\n", ducks.q2.v[1]);
printf("%f\n", ducks.q2.v[2]);
return 0;
}
你的第一行編譯。 但是 - 你不能兩次定義相同的變量......
在你的第二行中,你需要在大括號內執行q1和q2結構的嵌套初始化,而不是使用.firstlevelfield.secondlevelfield進行兩級降低:
dualquackStruct ducks = { .q1 = { .s = 0.0, .v = { 0.5, 4.0, 2.1} },
.q2 = { .s = 0.85, .v = {20.0, 10.0, -5.0} } };
看兩行(校正后)編譯 (GodBoot)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.