[英]Initialize array of structures
我在C中初始化結構數組時遇到問題。這是我的結構:
typedef struct Voie {
int num;
int sem_num[3];
int crois[3];
} Voie;
這兩個數組將包含0,2或3個整數。
我有一個12“Voie”陣列:
Voie voies[12];
我希望用這些參數初始化每個參數:
{1,{0,16,1},{4,7,8}}
{2,{2,3},{4,5}}
{3,{},{}}
{4,{4,17,5},{7,10,11}}
{5,{6,7},{7,8}}
{6,{},{}}
{7,{8,17,9},{10,1,2}}
{8,{10,11},{10,11}}
{9,{},{}}
{10,{12,16,13},{1,4,5}}
{11,{14,15},{1,2}}
{12,{},{}}
我試過一個函數返回一個結構,用一個開關分隔每個案例,但有重新定義的問題。 然后我發現我認為是最好的解決方案,但仍然無法運行:
int cas[][] = { {1,{0,16,1},{4,7,8}},
{2,{2,3},{4,5}},
{3,{},{}},
{4,{4,17,5},{7,10,11}},
{5,{6,7},{7,8}},
{6,{},{}},
{7,{8,17,9},{10,1,2}},
{8,{10,11},{10,11}},
{9,{},{}},
{10,{12,16,13},{1,4,5}},
{11,{14,15},{1,2}},
{12,{},{}} };
for (i=0 ; i<12 ; i++) {
voies[i] = cas[i];
}
我甚至不確定這是可能的,因為以下工作:
Voie v = {1,{0,16,1},{4,7,8}};
但不是以下內容:
int tab[] = {1,{0,16,1},{4,7,8}};
Voie v = tab;
另外:初始化后,如何訪問結構中的每個元素?
謝謝您的幫助。
您可以使用以下命令初始化數組:
編輯:
Voie voies[12] = {
{1,{0,16,1},{4,7,8}},
{2,{2,3,},{4,5,}},
{3,{0,},{0,}},
{4,{4,17,5},{7,10,11}},
{5,{6,7,},{7,8,}},
{6,{0,},{0,}},
{7,{8,17,9},{10,1,2}},
{8,{10,11,},{10,11,}},
{9,{0,},{0,}},
{10,{12,16,13},{1,4,5}},
{11,{14,15,},{1,2,}},
{12,{0,},{0,}}
};
您可以訪問voies [5] .sem_num [0]等元素。
如果我沒錯,上面的示例值將是17。
您的聲明cas[][]
和使用空{}
初始化都不是標准C.
您可能在聲明中最多只有一個空[]
,並且您必須在{}
內放置至少一個0
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.