struct结构体指针 *p的大小为什么是整个结构体的大小

#include "stdio.h"
int main(void)
{
struct A
{
char a[9];
int b;
}B,*p;

printf("%d\n",sizeof(B));
printf("%d\n",sizeof(p));
printf("%d\n",sizeof(*p));
}

结果为什么 16 4 16
B的大小是16是考虑对齐
指针大小是4也对
但是为什么*p大小16??不应该指向struct A类型的结构体首地址 为1吗

p是指向struct A类型的结构体首地址 ,*p就是结构体的内容追问

那它跟数组不一样 就不是指向第一个成员了??

追答

*p代表的是整个内容,你用p++就相当于已经跳出这个结构体存储空间了,而数组的p++则是下一个元素,这个不一样。

追问

好的 谢谢

温馨提示:答案为网友推荐,仅供参考
相似回答