使用预增量运算符指向指针解引用的指针

时间:2016-07-27 14:10:14

标签: c pointers dereference pre-increment

以下程序输出为17,29,45;我无法理解**++pp;的含义。任何人都可以详细解释该计划。

    #include <stdio.h>

    int main() {
        static int a[] = {10, 22, 17, 29, 45};
        static int *p[] = {a, a + 2, a + 1, a + 4, a + 3};
        int **pp = p;
        **++pp;
        printf("%d %d %d", **pp, *pp[3], pp[0][2]);
    }

1 个答案:

答案 0 :(得分:3)

在您的代码中,**++pp;* (* ( ++pp));相同。它首先递增指针,然后两次递减(第一个取消引用结果是指针类型,详细说明)。

但是,不使用通过解除引用获得的值。如果您启用了编译器警告,您将看到类似

的内容
  

警告:未使用计算值

您可以删除解除引用,这没用。