簡體   English   中英

為什么我不能在嵌套結構中初始化數組?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM