首页 > 解决方案 > 如何在 C++ 中动态声明一个指向整数的指针数组?

问题描述

为什么这行得通?

int **ar1 = new int*[5];

虽然这会在 C++ 中引发错误:

int *ar2[] = new int*[5];

我知道在第一种情况下 ar1 代表一个指向指针的指针,而在第二种情况下 ar2 代表一个指向整数的数组。鉴于“new int*[5]”这一行意味着 new 运算符正在返回指向内存空间的指针以存储 5 个指向整数的指针,那么第二种情况有什么问题???

标签: c++arrayspointers

解决方案


您正在尝试初始化一个数组对象。

初始化数组类型的对象时,初始化程序必须是字符串文字(可选地用大括号括起来)或 为数组成员初始化的大括号括起来的列表:

在您的情况下,您都不提供。大括号初始化例如:

int i = 1, j = 2;
int *ar2[] = {&i, &j};

推荐阅读