【发布时间】:2019-08-28 10:17:05
【问题描述】:
我知道当我这样做时
int x;
cin >> x;
char arr [x];
根据 c++ 标准,它是病态的,因为 c++ 不允许可变大小的静态数组。
我的问题是,如果我在函数范围内声明静态数组,函数参数的大小可变,它仍然是不正确的吗?还是在标准中明确定义?
void foo(int size)
{
char arr [size];
// do something
}
void main()
{
foo(10);
foo(20);
}
【问题讨论】:
-
为什么不
std::string或std::vector<char>? -
在你的两个例子中,数组的大小是可变的——它不会起作用。
-
您似乎在使用可变长度数组编译器扩展,不,这不是标准 c++,无论是否在函数内部
-
"... 不允许可变大小的静态数组..." 更正:"... 不允许可变大小的数组... "
标签: c++ string vector containers