在C ++书中,数组绑定必须是常量expression式,但为什么下面的代码工作?
#include <iostream> using namespace std; int main(){ int n=10; int a[n]; for (int i=0; i<n; i++) { a[i]=i+1; cout<<a[i]<<endl; } return 0; }
在Mac下的Xcode4中工作得很好
正如书中所说,这应该是错的,为什么?
好糊涂〜
这是一个C99特性,称为VLA ,一些编译器也允许在C ++中使用。 它是在栈上的分配,就像int a[10]
。
这是允许VLA(可变长度数组)的C99function。
编译它与g++ -pedantic
,我敢肯定,不会编译。