【问题标题】:What is happening with the pointer in this C code?这个 C 代码中的指针发生了什么?
【发布时间】:2020-12-13 09:56:14
【问题描述】:

问题->

#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

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

【问题讨论】:

标签: c pointers memory memory-address


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-11-12
    • 1970-01-01
    • 2015-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-09
    相关资源
    最近更新 更多