c++ - 使用双指针声明二维数组

标签 c++

我对 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/

相关文章:

c++ - 完全作为库实现的 C++ is_lambda 特性是不可能的吗?

c++ - 如何编写与复制构造函数具有相同签名的 C++ 构造函数?

java - JNI 失败并返回 'Error occurred during initialization of VM'

C++ - 定义类模板(头文件/源文件)

Android 原生 Parcel 使用

c++ - 如何使用 C++ 在 vlc 中播放 mp3 文件

c++ - 如何创建在末尾附加整数的变量名?

c++ - 查找与线段相交的所有图 block

c++ - 这段代码在哪里出现段错误?

c++ - 随着 std::byte 的标准化,我们什么时候使用 void* 什么时候使用 byte*?