C 结构体指针地址问题

#include<stdio.h>

typedef struct _test{
    int * a;
    int * b;
    int * c;
} Pointers;

int main(){

Pointers pt1;
pt1.a = pt1.b = pt1.c = NULL;

printf("%p %p %p\n",pt1.a,pt1.b,pt1.c);                     
printf("%p %p %p %p\n", &pt1, &pt1.a, &pt1.b, &pt1.c);     
printf("%p\n",pt1);                                        //这个是什么意思?

return 0;
}

打印结果:

0000000000000000 0000000000000000 0000000000000000
000000000062FE00 000000000062FE00 000000000062FE08 000000000062FE10
000000000062FDD0

如果前面几个分别是 3个指针所指向的地址 和 3个指针自己的地址,那么请问这个最后的 0x62FDD0 该怎么解释?

我觉得

printf("%p\n",pt1);是打印结构体的地址;

printf("%p\n", &pt1);是打印结构体指针的地址;

printf("%p %p %p\n", &pt1.a, &pt1.b, &pt1.c);是打印变量的地址

printf("%p %p %p\n",pt1.a,pt1.b,pt1.c);这里应该输出的地址是空NULL,因为没有指定地址符

为什么printf("%p\n",pt1);是打印结构体的地址?

我猜测是结构体的一种机制吧,因为他存储的可不是一个变量,而是多个变量的地址。

struct _test 结构体地址

您好,我是有问必答小助手,你的问题已经有小伙伴为您解答了问题,您看下是否解决了您的问题,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632

非常感谢您使用有问必答服务,为了后续更快速的帮您解决问题,现诚邀您参与有问必答体验反馈。您的建议将会运用到我们的产品优化中,希望能得到您的支持与协助!

速戳参与调研>>>https://t.csdnimg.cn/Kf0y