簡體   English   中英

如何在C中初始化struct數組的成員

[英]how to initialize members of an array of struct in C

我有以下結構:

typedef struct {
    int someArray[3][2];
    int someVar;
} myStruct;

如果我在main中創建這個結構的數組(如下所示),我將如何初始化它?

int main() {
    myStruct foo[5];
}

我想以類似於初始化普通數組的方式初始化上面的struct數組(見下文):

int main() {
    int someArray[5] = {1,4,0,8,2};
}

從外面開始工作。你知道你有5個要初始化的數組:

mystruct foo[5] = { 
                    X, 
                    X, 
                    X, 
                    X, 
                    X 
                  };

其中Xmystruct類型的初始值設定項的mystruct 所以現在我們需要弄清楚每個X樣子。 mystruct每個實例都有兩個元素, somearraysomevar ,所以你知道你的X初始化器的結構是這樣的

X = { Y, Z }

替換回原始聲明,我們現在得到

mystruct foo[5] = { 
                    { Y, Z }, 
                    { Y, Z }, 
                    { Y, Z }, 
                    { Y, Z }, 
                    { Y, Z } 
                  };

現在我們需要弄清楚每個Y的樣子。 Y對應於3x2 int數組的初始值設定項。 同樣,我們可以從外部工作。你有一個3元素數組的初始化器:

Y = { A, A, A }

其中每個數組元素是int的2元素數組:

A = { I, I }

回到Y,我們得到

Y = { { I, I }, { I, I }, { I, I } }

把它替換回X,我們得到了

X = { { { I, I }, { I, I }, { I, I } }, Z }

現在給了我們

mystruct foo[5] = {
                    { { { I, I }, { I, I }, { I, I } }, Z },
                    { { { I, I }, { I, I }, { I, I } }, Z },
                    { { { I, I }, { I, I }, { I, I } }, Z },
                    { { { I, I }, { I, I }, { I, I } }, Z },
                    { { { I, I }, { I, I }, { I, I } }, Z }
                  };

由於Z是整數的替代,我們不需要進一步細分。 只需用實際的整數值替換I s和Z s,就完成了:

mystruct foo[5] = {
                    {{{101, 102}, {201, 202}, {301, 302}}, 41},
                    {{{111, 112}, {211, 212}, {311, 312}}, 42},
                    {{{121, 122}, {221, 222}, {321, 322}}, 43},
                    {{{131, 132}, {231, 232}, {331, 332}}, 44},
                    {{{141, 142}, {241, 242}, {341, 342}}, 45}
                  };

在一組大括號中為數組的每個結構元素包裝初始值設定項:

myStruct foo[5] =
{
   { { { 11, 12 }, { 13, 14 }, { 55, 56 }, }, 70 },
   { { { 21, 22 }, { 23, 24 }, { 45, 66 }, }, 71 },
   { { { 31, 32 }, { 33, 34 }, { 35, 76 }, }, 72 },
   { { { 41, 42 }, { 43, 44 }, { 25, 86 }, }, 73 },
   { { { 51, 52 }, { 53, 54 }, { 15, 96 }, }, 74 },
};

像那樣:

int main() {
                      //   someArr initialization  | someVar initialization
    mystruct foo[5] = { { { {1, 2}, {1,2}, {1, 2} }, 1                      }, // foo[0] initialization
                       //...
                      };
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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