Jor*_*485 -2 c++ int const input
我想给一个长度为x的数组.x是用户输入.但问题是x必须是常量.
这是我的代码:
int *length = 0;
cin >> (*length);
const int arraylength = const_cast<int>(*length);
int l[arraylength];
Run Code Online (Sandbox Code Playgroud)
您无法在C++中分配具有动态长度的基于堆栈的数组(您可以在C中) - 长度需要是编译时常量.你需要动态分配数组(或使用std::vector<>)
int* l = new int[arrayLength];
// use l as you did before
delete[] l; // when you no longer need to access its contents
Run Code Online (Sandbox Code Playgroud)
此外,您声明一个指针length,但它被初始化为NULL,这意味着您不能取消引用它(您cin >> (*length);将在运行时失败)
注意:由于您使用的是C++,最好使用std::vector<int>而不是原始数组 - 如果需要,您可以获得动态调整大小的好处和可能的边界检查(使用其at()成员函数时),也不需要删除它,因为它使用RAII习惯用法在其生命周期结束后清理已分配的内存(在异常情况下也提供内存泄漏保护).