我对 C++ 程序中的这一行感到困惑。该程序的思想是检查 4x4
数组是否对称。这部分代码声明了一个二维数组,我不明白。
int** array = new int*[n];
虽然,还有另一个与此类似的问题,但它是关于我得到的单指针的。
int *array = new int[n];
我不明白双指针。请解释。
最佳答案
如何创建单指针数组?你这样做:
int* myArray = new int[n];
这是什么意思?它有两个部分。第一部分是保留一个指针 int*
我们称之为 myArray
,第二部分是您保留 n
个元素,每个元素的大小为 int
存储在内存中(这是一个数组,对吗?),然后获取该数组的地址并将其保存在变量 myArray
中。
现在你想要一个二维数组,它是数组的数组。所以这个新数组的每个元素都是其中之一,我们在那里讨论过。我们如何保留这个?我们这样做:
new int*[n];
因为我们要保留 n
个插槽,每个插槽的类型都是 int*
,我们之前谈到过。
现在返回值的类型是什么?它是数组的数组,或者说是“指向数组的指针,后者也是指向数组的指针”,所以你写成
(int*)*
或者
int**
变成了
int** array = new int*[n];
关于c++ - 使用双指针声明二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39397322/