gpt4 book ai didi

c++ - 为什么要有一个指向指针的指针(int **a)?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:04:42 24 4
gpt4 key购买 nike

int **a = malloc2d(M, N) // dynamically allocates a 2D array

int **a 代替int *a 的目的是什么。我知道动态分配需要指针,但为什么要有指向指针的指针?

对于一个 3 维数组应该是:

int ***a

?

最佳答案

出于多种原因,您需要一个指向指针的指针。

在您给出的示例中,使用双指针来存储二维数组。

C 中的二维数组被视为元素为一维的一维数组数组(行)。

例如,一个 4x3 的 T 数组(其中“T”是某种数据类型)可能由:“T mat[4][3]”声明,并由以下内容描述方案:

                       +-----+-----+-----+
mat == mat[0] ---> | a00 | a01 | a02 |
+-----+-----+-----+
+-----+-----+-----+
mat[1] ---> | a10 | a11 | a12 |
+-----+-----+-----+
+-----+-----+-----+
mat[2] ---> | a20 | a21 | a22 |
+-----+-----+-----+
+-----+-----+-----+
mat[3] ---> | a30 | a31 | a32 |
+-----+-----+-----+

另一种情况是,当您将指针传递给函数时,您希望该函数分配该指针。为此,您必须是指针变量的地址,因此是指向指针的指针

void make_foofoo(int** change) {
*change = malloc(4);
}

关于c++ - 为什么要有一个指向指针的指针(int **a)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2174881/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com