将动态数组初始化为0
initializing a dynamic array to 0?
int main()
{
int arraySize;
int arrayMain[arraySize-1];
cout << "nnEnter Total Number of Elements in Array.nn";
cin >> arraySize;
arrayMain[arraySize-1]={0};
cout <<"nn" <<arrayMain;
return 0;
}
当我编译上述代码时,我的编译器会冻结。我很困惑如何将动态数组设置为0?
使用std::vector
:
std::vector<int> vec(arraySize-1);
您的代码无效,因为1(arraySize
未初始化,2(C++中不能有可变长度数组。因此,要么使用向量,要么动态分配内存(这就是std::vector
在内部所做的(:
int* arrayMain = new int[arraySize-1] ();
请注意末尾的()
,它用于初始化元素的值,因此数组的元素将设置为0。
如果您想将整个数组初始化为零,请执行此操作,
int *p = new int[n]{0};
如果必须使用动态数组,则可以使用值初始化(尽管建议使用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 <<"nn" <<arrayMain;
将打印arrayMain
数组的地址,而不是每个单独的元素。要打印每个个体,您需要依次索引每个元素:
for (int i = 0; i < arraySize - 1; i++) std::cout << arrayMain[i] << 'n';
相关文章:
- 是否可以在编译时初始化数组,以便在运行时不会花费时间?
- 在函数内部的声明中初始化数组,并在外部使用它
- 为什么用结构初始化数组需要指定结构名称
- 有没有一种代码密度较低的方法来使用非默认构造函数初始化数组?
- C++使用另一个数组和新值初始化数组
- 初始化数组、"memset"或" {//value} "的最佳方法是什么?
- 在 constexpr 构造函数中初始化数组是否合法?
- 我可以初始化 const 实例,以便我可以将其用作 const 来初始化数组吗?
- 在构造函数中初始化数组
- 是否可以使用函数返回的值初始化数组
- 使用宏使用额外元素初始化数组
- 在循环中显示不同值的初始化数组
- 如何在macOS中的旧扩展clang和gcc编译器中初始化数组和向量
- 使用可变模板列表初始化数组,并放置new
- 使用函数从 Visual Studio 2017 中的 main 创建和初始化数组
- 使用 c++ 中的函数初始化数组
- 这是使用构造函数初始化数组对象的最佳方法吗?
- C++ 使用变量而不是常量表达式初始化数组
- 在初始化列表中初始化数组的更好方法
- 在可变参数模板类中初始化数组