我知道可以明確地初始化一個1-d陣列如下initiailizing n維陣列時,尺寸來顯式地指定:爲什麼必須N-1在C
int a1d[] = {0, 1, 2, 3, 4, 5};
此陣列將具有完全相同6元素 - sizeof(a1d)/sizeof(a1d[0])
告訴我。
我試圖用2-(或更多)維數組做到這一點:
int a2d[][] = {{0, 1, 2}, {3, 4, 5}};
但是GCC錯誤與error: array type has incomplete element type
。 這似乎是從初始化明確,這是一個2x3數組,但它似乎這是不允許的 - 這是爲什麼?
相反,我必須指定所有,但一個維度:
int a2d[][3] = {{0, 1, 2}, {3, 4, 5}};
我明白,如果我要一個n維數組傳遞給一個函數,那麼它是絕對必要的n-1個尺寸在該函數中指定,如Why do we need to specify the column size when passing a 2D array as a parameter?這個問題所解釋的那樣,但對於我明顯初始化的情況來說,它不那麼明顯。這只是標準的限制,還是有一個令人信服的技術原因,我失蹤了?
這樣編譯器就可以確定如何佈局內存中的非鋸齒形數組。 –
@MitchWheat - 但從初始化不明顯嗎?還是編譯器不夠聰明來解決這個問題? –
@MitchWheat - 你能在這裏精確地展開你的意思嗎? –