gpt4 book ai didi

c++ - 用非常量变量声明数组大小

转载 作者:IT老高 更新时间:2023-10-28 12:48:04 26 4
gpt4 key购买 nike

我一直认为,在 C++ 中声明数组时,大小必须是一个常量整数值。

例如:

int MyArray[5]; // correct

const int ARRAY_SIZE = 6;
int MyArray[ARRAY_SIZE]; // correct

但是

int ArraySize = 5;
int MyArray[ArraySize]; // incorrect

这也是 The C++ Programming Language, by Bjarne Stroustrup 中的解释:

The number of elements of the array, the array bound, must be a constant expression (§C.5). If you need variable bounds, use a vector(§3.7.1, §16.3). For example:

  void f(int i) {
int v1[i]; // error : array size not a constant expression
vector<int> v2(i); // ok
}

但令我大吃一惊的是,上面的代码在我的系统上编译得很好!

这是我尝试使用 GCC v4.4.0 编译的内容:

void f(int i) {
int v2[i];
}

int main() {
int i = 3;
int v1[i];
f(5);
}

成功了?!?

我有什么遗漏吗?

最佳答案

这是a GCC extension达到标准:

您可以使用 -pedantic 选项使 GCC 发出警告,或使用 -std=c++98 选项来产生错误,当您使用这些扩展中的一个(以防可移植性受到关注)。

关于c++ - 用非常量变量声明数组大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2863347/

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