我正在创建大小在运行时定义的静态字符数组。而且我没有收到编译错误。
这怎么可能?
这是我的例子:
void f(const string& val) {
char valBuf[val.size() + 1]; strcpy(valBuf, val.c_str());
cout << valBuf << endl;
}
int main() {
string str = "aaaa";
f(str);
return 0;
}
我正在创建大小在运行时定义的静态字符数组。而且我没有收到编译错误。
这怎么可能?
这是我的例子:
void f(const string& val) {
char valBuf[val.size() + 1]; strcpy(valBuf, val.c_str());
cout << valBuf << endl;
}
int main() {
string str = "aaaa";
f(str);
return 0;
}
VLA(即可变长度数组)是 C99 的一个特性,一些 C++ 编译器(例如 GCC)支持作为扩展。
这在标准 C++ 下是不允许的。