给数组创建大小时,可以采用变量来确定数组的维度大小吗?
系统使用window10和Ubuntu16.04。
编译器版本。
在window10采用g++ 5.4.0和gcc 5.1.0
在Ubuntu采用g++ 5.4.0,clang 3.8.0 和gcc 5.1.0
代码如下
c++
#include <iostream>
int main(){
int size = 5;
int test[size];
test[0] = 0;
cout << test[0] << endl;
return 0;
}
C
#include <stdio.h>
int main(){
int size = 5;
int test[size];
test[0] = 0;
printf("%d", test[0]);
return 0;
}
均可以编译通过,没有任何问题??为什么丫??
@felix 我把来自于felix的评论分享一下吧。跟上面的几个大神说的都是一样的,但是他贴了个官方的文档,所以可能会更清晰完美一些。还是谢谢上面的几个大神的帮助。下面是答案。
参见于
gcc
的官方文档 可以知道,这是一个C99的特性,可以使用变量名来定义数组长度,但是对于C++而言是一个可选特性。另外,在陈浩的酷客发现了这么一篇文章,对于理解数组乱七八糟的东西还是挺有帮助的。谢谢各位。