这段 C 代码中的指针发生了什么?

What is happening with the pointer in this C code?

问题->

#include<stdio.h>
    int main()
    {
        int a,*b,**c,***d;
        int x;
        a=&x;
        b=&a;
        c=&b;
        d=&c;
        printf("%d\t%d\t%d\t%d",a,b,c,d);
        a++;
        b++;
        c++;
        d++;
        printf("\n%d\t%d\t%d\t%d",a,b,c,d);
        return 0;
    }

输出

-760636132  -760636128  -760636120  -760636112

-760636128  -760636120  -760636112  -760636104

为什么在第 2 个指针之后所有指针都递增 8?

如果您检查过,您会发现 sizeof(int) == 4sizeof(int*) == 8。当您打印指针时,您会看到实际值。增加指针会增加指针指向的大小。

您非常接近未定义的行为。如果您试图读取这些指针指向的内容(或者更糟的是,写入它们),结果可能会非常糟糕。