今天我偶然定義了一維爲0的二維數組,但是我的編譯器沒有發出抱怨。我發現其中指出,這是合法的,至少在海灣合作委員會的情況如下:大小爲0的數組
不過,我對這個用法兩個問題:
首先,這被認爲是良好的編程實踐?如果是這樣,那麼我們應該什麼時候在真實世界中使用它?
其次,我定義的數組是二維的,一維爲0。這與一維情況相同嗎?例如,
int s[0]
int s[0][100]
int s[100][0]
它們在內存和編譯器中都是一樣的嗎?
編輯:回覆Greg:我使用的編譯器是gcc 4.4.5。我對這個問題的意圖不是依賴於編譯器,但是如果有任何編譯器具體的怪癖,這將有所幫助:)
在此先感謝!
鑑於您已經在您的問題中引用了編譯器,它將有助於提供有關您所關注的特定編譯器的信息。 – Greg 2011-05-30 19:28:01
請檢查此問題http://stackoverflow.com/questions/295027/array-of-zero-length – vasin 2011-05-30 19:30:21
請注意,對於C++ 11,「std :: array」類型[可能具有0的大小](http: //en.cppreference.com/w/cpp/container/array)(但普通數組必須至少有一個元素)。 – Cameron 2013-08-24 19:02:36