双指针地址

时间:2017-12-05 21:28:34

标签: c pointers double-pointer

我创建并分配了一个像这样的双指针:

 int **a;
 a = (int**)malloc(10 * sizeof(int *));
 for (int i = 0; i < 10; i++)
     *(a+i) = (int *)malloc(10 * sizeof(int));

然后我将其初始化为例如:

for (int i = 0; i < 10; i++) {
    for (int j = 0; j < 10; j++) {
        **a = 1;
         (*a)++;
    }
    a++;
 }

我的问题和疑问是如何保存双指针的地址?此时我丢失了它们并且不能再使用它们了。

2 个答案:

答案 0 :(得分:4)

当数组下标执行时,不要使用显式指针算法和解除引用:

 int rows = 10, cols = 10
 int **a;
 // don't cast the return value of malloc
 a = malloc(rows * sizeof(*a));
 for (int i = 0; i < rows; i++)
     a[i] = malloc(cols * sizeof(**a));

...

for (int i = 0; i < rows; i++) {
    for (int j = 0; j < cols; j++) {
        a[i][j] = 1;
    }
 }

答案 1 :(得分:-1)

从函数返回a,将其保存为类成员,它就像任何其他变量一样。如果你想保存数组的内容然后那样做(但这不是我可以调用保存双指针的方式 - 顺便说一下通常的描述是&#34;指向指针&#34;)。 / p>