【问题标题】:create array of size N before compile time在编译时间之前创建大小为 N 的数组
【发布时间】:2018-08-31 10:40:03
【问题描述】:

我正在尝试在函数something 内部创建大小为max_value 的数组new_arraymax_value 的值只能在运行时知道。如何修复此代码?

void something (int input_array[], int array_length) {
    int max_value = *std::max_element(input_array, input_array + 8);
    int new_array[max_value] = {0};
}

我收到实时问题消息:“可变大小的对象可能未初始化”

【问题讨论】:

标签: c++ arrays function parameters initialization


【解决方案1】:

尽管some compilers may support them(还有你的),但C++ 没有可变长度数组(请阅读here 为什么)。

如果您可以使用堆而不是堆栈,您可以像这样使用 std::vector:

std::vector<int> new_array(max_value, 0);

但要消除错误,您可以像这样手动删除初始化程序并初始化数组:

int new_array[max_value];
memset( new_array, 0, max_value*sizeof(int) );

【讨论】:

  • 使用std::vector&lt;int&gt; new_array(max_value,0); 将数组的所有值初始化为零。
猜你喜欢
  • 2022-01-12
  • 2018-09-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-19
  • 1970-01-01
相关资源
最近更新 更多