今天我无意中定义了一个二维数组,其中一个维度的大小为0,但是我的编译器没有抱怨。我找到了以下内容,说明这在gcc中是合法的:
然而,我有两个关于这种用法的问题:
首先,这被认为是良好的编程实践吗?如果是,那么我们应该在什么情况下在真实世界中使用它?
其次,我定义的数组是二维的,其中一个维度的大小为0。这和一维情况下是一样的吗?例如,
int s[0]
int s[0][100]
int s[100][0]
他们在内存中和编译器中都是一样的吗?编辑:回答Greg:我使用的编译器是gcc 4.4.5。我解决这个问题的意图并不依赖于编译器,但是如果有任何编译器特定的怪癖也会很有帮助 :)
提前致谢!
std::array
类型可以具有大小为0(但普通数组仍必须至少有一个元素)。 - Cameron