在C++书籍中,数组绑定必须是常量表达式,但是为什么下面的代码有效? [重复]

问题描述 投票:0回答:2
#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 中运行良好

书上说的,应该是错的,为什么呢?

好困惑~

c++ variable-length-array
2个回答
6
投票

这是一个称为 VLA 的 C99 功能,一些编译器在 C++ 中也允许该功能。它在堆栈上分配,就像

int a[10]
一样。


5
投票

这是C99的特性,允许VLA(可变长度数组)。

g++ -pedantic
编译它,我确定不会编译。

© www.soinside.com 2019 - 2024. All rights reserved.