c語言 柔性陣列初始化

2021-10-03 19:55:59 字數 509 閱讀 4555

在做專案時,遇到相似結構,差異在乙個成員,這個成員想表達可變陣列,資料結構如下

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...