【问题标题】:Static array of chars with dynamic size [duplicate]具有动态大小的字符的静态数组[重复]
【发布时间】:2014-10-06 23:33:20
【问题描述】:

我正在创建大小在运行时定义的静态字符数组。而且我没有收到编译错误。
这怎么可能?
这是我的例子:

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;
}

【问题讨论】:

标签: c++ variable-length-array


【解决方案1】:

VLAs (i.e. variable length arrays) 是 C99 的一个特性,一些 C++ 编译器 (GCC, for example) 支持作为扩展。

这在标准 C++ 中是不允许的。

【讨论】:

  • 从 C 字符串构造 std::string。但即使没有 VLA,也支持 C 字符串。不是吗?
  • 为什么 C 字符串会依赖 VLA? C 字符串早在 VLA 之前就已经在 C 中了。
猜你喜欢
  • 2021-10-29
  • 2014-07-21
  • 2013-08-24
  • 1970-01-01
  • 2019-07-06
  • 2013-02-24
  • 2011-09-11
  • 2021-12-17
  • 1970-01-01
相关资源
最近更新 更多