具有C 始终允许使用数组大小的变量
Has C++ Always Allowed Using A Variable for Array Size?
出于某种原因,我记得无法做这样的事情:
int arraySize;
cin >> arraySize;
int array[arraySize];
,但是最近,我再次尝试了此问题,但没有引起任何问题。在此之前,我可以发誓要在编译器中丢下错误(Macos Sierra,Xcode 8.1)。语言中是否有任何更新以允许这样做? - 我可能会完全记住,这不是以前的问题,但我不确定。我认为必须在编译过程中定义数组大小,并且用户无法选择(这是您实现动态数组的地方)。
C 标准不支持变量长度数组,尽管某些编译器可以具有自己的语言扩展,允许在C 程序中使用VLA。
因此,此代码段
int arraySize;
cin >> arraySize;
int array[arraySize];
不兼容C 。
使用标准C 类std::vector
。
至于C,根据C标准实现可以有条件地支持VLA。
您可以检查实现是否支持VLA。从C标准(6.10.8.3条件特征宏)
1以下宏名称有条件地定义 实施:
__STDC_NO_VLA__
整数常数1,旨在表明实现 不支持可变长度阵列或可变修改的类型。
是更新的语言中的任何内容,以允许此
否。可变长度阵列(又名VLA)是编译器特定的扩展。
C 标准永远不会允许(与C99标准不同)。
相关文章:
- 将数组的地址分配给变量并删除
- 试图让变量检查数组中的某些内容
- 将包含C样式数组的对象初始化为成员变量(C++)
- 如何声明一个可以在整个程序中使用的全局 2d 3d 4d .. 数组(堆版本)变量?
- 在C++中将变量 wstring 分配给 Char 数组
- 如何为 c++ 的不同变量类型的结构元素创建动态数组?
- c++ 中的别名变量数组
- 使用类的其他成员变量定义类的成员变量数组
- 可视化 如何在C++中使用复杂变量数组
- 如何 for 循环类变量数组
- 按变量数组中的列将一组整数从文本文件读入
- 运行时C++中的变量数组维度
- C++变量数组
- 将变量(数组类型)从函数传递到"main"范围类型:标准::tr1::match_results<标准::字符串::const_iterator>
- 在堆栈上使用大变量/数组的缺点
- 如何在继承类中创建父类变量数组作为私有成员
- 如何创建一个类变量数组
- 需要以编程方式初始化类变量数组,我怎么做最好
- 直接使用变量(数组中的数据返回相同)或与指针一起使用
- 如何用模板类型初始化成员变量数组