int main()
{
int arraySize;
int arrayMain[arraySize-1];
cout << "\n\nEnter Total Number of Elements in Array.\n\n";
cin >> arraySize;
arrayMain[arraySize-1]={0};
cout <<"\n\n" <<arrayMain;
return 0;
}
编译上面的代码时,我的编译器冻结了。我对如何将动态数组设置为0感到困惑?
答案 0 :(得分:11)
您使用std::vector
:
std::vector<int> vec(arraySize-1);
您的代码无效,因为1)arraySize
未初始化,2)您不能在C ++中使用可变长度数组。所以要么使用向量,要么动态分配内存(这是内部std::vector
所做的):
int* arrayMain = new int[arraySize-1] ();
注意最后的()
- 它用于对元素进行值初始化,因此数组的元素将设置为0。
答案 1 :(得分:3)
如果必须使用动态数组,则可以使用值初始化(尽管std::vector<int>
是推荐的解决方案):
int* arrayMain = new int[arraySize - 1]();
检查输入操作的结果以确保为变量分配了正确的值:
if (cin >> arraySize && arraySize > 1) // > 1 to allocate an array with at least
{ // one element (unsure why the '-1').
int* arrayMain = new int[arraySize - 1]();
// Delete 'arrayMain' when no longer required.
delete[] arrayMain;
}
请注意使用cout
:
cout <<"\n\n" <<arrayMain;
将打印arrayMain
数组的地址,而不是每个单独的元素。要打印每个人,您需要依次为每个元素编制索引:
for (int i = 0; i < arraySize - 1; i++) std::cout << arrayMain[i] << '\n';
答案 2 :(得分:0)
如果要将整个数组初始化为零,请
int *p = new int[n]{0};