在编译时创建大小为N的数组

时间:2018-03-22 05:21:20

标签: c++ arrays function parameters initialization

我正在尝试在函数new_array中创建大小为max_value的数组somethingmax_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};
}

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

1 个答案:

答案 0 :(得分:3)

C ++没有可变长度数组(阅读here为什么)虽然some compilers may support them(以及你自己)。

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

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

但要删除错误,您只需删除初始化程序并手动初始化数组:

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