我认为数组的大小应该是恒定的。我在 VS 2019 中编写代码,甚至当我执行以下操作时:
const int size = 5;
int number[size];
我会收到这个错误expression must have a constant value
,直接使用整数作为数组大小的唯一替代方法是使用macro define
,否则我会收到错误。
但在一些 IDE 中,比如dev
,甚至可以将数组的大小作为用户的输入。我还看到人们在这里使用用户定义的数组大小编写代码。
所以这是我的问题:
这样做对吗?用户定义的数组大小是否存在风险和问题?
可变长度数组 (VLA) 是从 C99 开始合法 https://en.cppreference.com/w/c/language/array,尽管一些编译器(例如 GCC)也将允许它们作为旧版本中的扩展。从 C11 开始,编译器不再需要支持 VLA,并将定义__STDC_NO_VLA__
as 1
如果他们不支持的话。
VLA 本质上是有风险的:要么您事先知道数据的最大大小,在这种情况下您可以分配一个固定长度的数组,要么您不知道,在这种情况下您将面临堆栈溢出的风险。
值得注意的是,在 C++ 中,变长数组从来都不是标准的一部分。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)