我想在一行中聲明和初始化結構數組。但它看起來不像我們在數組中那樣受到支持。在下面的代碼中,myStructArray[3]
給出錯誤,而myStructArray2[3]
工作正常。爲什麼在一個線路初始化不允許(我知道這是不是一個好的做法做,但還是想知道是否有任何理由。)結構數組的單線初始化
typedef struct myStruct
{
int structMemInt;
char structMemChar;
}MYSTRUCT;
int main (void)
{
struct myStruct myStructArray[3] = {2,'a',5,'b',7,'c'};
struct myStruct myStructArray2[3] = {
{2,'a'},
{5,'b'},
{7,'c'},
};
}
更新時間:
這裏的要點是關於一個對每個數組成員和大括號沒有單獨的大括號。這意味着爲什麼它不適用於{2,'a',5,'b',7,'c'}
,爲什麼它必須包括大括號{{2,'a'},{5,'b'},{7,'c'}}
?
我正在比較行爲與多維數組,其中我們不需要用花括號將每行數據分開。 這個懷疑開始是因爲Byron Gottfried編寫的理論和問題(Schaum概要系列)在例9.16(我有任何版本)中對多維數組部分的解釋如下。所以這意味着就二維數組初始化而言,這本書在錯誤方面是錯誤的。
int values[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};
而且更多的書(我沒有書細節,我從網上得到)說,類似的方法(附後第二張照片)
它與行數沒有任何關係..如果你要提供oneliner作爲{{2,「a」} ...}(注意{}的額外級別,它應該工作相同。 –
@KarthikT:對不起,我的問題還不清楚,更新了問題 –
所以你找到了一種可行的方法,一個不行,你已經意識到它不是換行符,而是缺失的大括號導致了差異那麼,什麼問題? – 5gon12eder