gpt4 book ai didi

c - 将数组的大小定义为用户输入的变量是否合法?

转载 作者:行者123 更新时间:2023-12-03 19:15:38 26 4
gpt4 key购买 nike

我认为数组的大小应该是恒定的。我在 VS 2019 中编写代码,甚至当我做这样的事情时:

    const int size = 5;
int number[size];

我会收到这个错误 expression must have a constant value ,直接使用整数作为数组大小的唯一替代方法,使用 macro define ,否则我会收到错误。

但在一些 IDE 中,例如 dev ,甚至可以将数组的大小作为用户的输入。我也看到人们在这里使用用户定义的数组大小编写代码。

所以这是我的问题:

这样做对吗?用户定义的数组大小是否存在风险和问题?

最佳答案

可变长度数组 (VLA) 是 legal from C99 onwards ,虽然像 GCC 这样的一些编译器也允许它们作为旧版本的扩展。从 C11 开始,编译器不再需要支持 VLA,并将定义 __STDC_NO_VLA__1如果他们不支持。

VLA 本质上是有风险的:要么你事先知道数据的最大大小,在这种情况下你可以分配一个固定长度的数组,或者你不知道,在这种情况下你会冒堆栈溢出的风险。

值得注意的是,在 C++ 中,变长数组从来不是标准的一部分。

关于c - 将数组的大小定义为用户输入的变量是否合法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60791332/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com