今天我偶然定义了一维为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