在C+书籍中,数组绑定必须是常量表达式,但是为什么下面的代码工作呢?

在C+书籍中,数组绑定必须是常量表达式,但是为什么下面的代码工作呢?

#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下的Xcode 4中工作得很好

正如书中所说,它应该是错误的,为什么?

如此迷茫~


陪伴而非守候
浏览 684回答 3
3回答

慕斯王

这是一个名为C99的特性VLA一些编译器在C+中也允许这样做。它是堆栈上的分配,就像使用int a[10].

湖上湖

这是允许VLA(可变长度数组)的C99特性。用g++ -pedantic我肯定那不会编译。

慕标5832272

你也可能需要-std=c++98或-ansi.
打开App,查看更多内容
随时随地看视频慕课网APP