结构尺寸 (C)

问题描述 投票:0回答:1
Could anyone explain me output of this code:

    struct X {struct X *p; short a, *b;};
    struct X x, *p=&x;
    printf("0:%x\n", p);
    printf("1:%x\n", sizeof(*p));
    printf("2:%x\n", &p->a);
    printf("3:%x\n", &p->b);
    printf("4:%x\n", ++p);
    printf("5:%x\n", p-&x);
    printf("6:%x\n", &x-p);

输出是

为什么 *p =18 的大小? 其他线路也让我感到困惑。 谢谢

pointers struct
1个回答
0
投票

两点备注:

  1. 输出端的1:1和2:8是错误的,与给定的代码无关
  2. 所以是8 + 2 + 8 = 18,所以这里好像不对齐。不知道为什么...?
      1. 和4.真的很简单,但是不知道为什么5.和6.p-&x和&x-p有不同的结果...
© www.soinside.com 2019 - 2024. All rights reserved.