c - 使用预递增运算符指向指针取消引用的指针

标签 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]);
    }

最佳答案

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

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

的内容

warning: value computed is not used

您可以删除取消引用,这是没有用的。

关于c - 使用预递增运算符指向指针取消引用的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38615393/

相关文章:

C将数字列表读入多个数组

c - 无法定位 "dereferencing pointer to incomplete type"错误的来源

c++ - 具有抽象成员的对象(无指针)

c - 为什么153的阶乘在下面的程序中失败了

c++ - 在 C++ 中,取消引用和获取索引零做同样的事情吗?

pointers - 为什么指向int的指针是使用 “*int”而不是 “&int”初始化的?

c++ - 聚合方法中的 sigsegv 错误

C:使用列表的数组的最后一个元素

c - 第 n 个素数的和

c - 在 C 中使用动态二维数组绘制网格