为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C++
陪伴而非守候 2019-07-09 15:52:10
在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中工作得很好正如书中所说,它应该是错误的,为什么?如此迷茫~
查看完整描述

3 回答

?
慕斯王

TA贡献1864条经验 获得超2个赞

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


查看完整回答
反对 回复 2019-07-09
?
湖上湖

TA贡献2003条经验 获得超2个赞

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

g++ -pedantic我肯定那不会编译。


查看完整回答
反对 回复 2019-07-09
?
慕标5832272

TA贡献1966条经验 获得超4个赞

你也可能需要-std=c++98-ansi.

查看完整回答
反对 回复 2019-07-09
  • 3 回答
  • 0 关注
  • 683 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信