在做專案時,遇到相似結構,差異在乙個成員,這個成員想表達可變陣列,資料結構如下
struct a ;
struct b ;
目的:
合併兩個結構,用同乙個結構表達
初始化變數,或陣列
首先合併ab兩個結構不難,可以使用柔性陣列
struct ab ;
這樣可以初始化成員
struct ab var = };
問題似乎解決,但是初始化陣列時出現了錯誤,如下寫法是錯的,
struct ab array[2] = },
[1]=}
};
和我這個問題一樣,未有答案
stackoverflow搜尋列表
gnu extension statment-expressions的解決方案
動態分配記憶體方案
gcc上關於這個問題的分析
C語言陣列初始化
陣列宣告時必須指明陣列元素的資料型別以及陣列中元素個數,計算機才可以為陣列預留出足夠的空間。陣列大小必須為常量。define size 10 int a 12 int b 100 c size 可以在宣告時通過初始值列表實現陣列元素初始化 int a 3 如果初始值列表中提供的元素個數少於陣列元素個...
C語言陣列初始化
wchar t wname 128 char cname 256 我感興趣的是 1.這種賦值的結果。2.這種形式是否符合標準編碼規則?我找到了如下資料,可能有助於對這個知識點的掌握。初始化值的個數可少於陣列元素個數。當初始化值的個數少於陣列元素個數時,前面的按序初始化相應值,後面的初始化為 0 全域...
C語言 陣列指標初始化
char m 3 4 m 3 4 當然不行,不管從初始化器,還是從原理上來講都不正確,首先a 3 4 表示的是陣列中第4行第5個元素,請問,可以對陣列中具體的乙個元素賦這麼長一串值嗎?所以不能這樣賦值。第一種寫法是屬於初始化,初始化會自動為陣列中的每乙個元素賦正確的值。陣列指標初始化方法 int p...