
12行中是输出结构体变量stu[0]中num的值,13行是输出结构体变量stu[1]中num的值,为什么结果是1029,不是1002呢?不理解,求解答

修改见注释,供参考:
#include <stdio.h>
int main()
{
struct Student {
int num;
char name[20];
float score;
}stu[2] = { {1001,"su",99},{1002,"yu",55}};
struct Student* p;
p = (struct Student*)stu[0].num;
//这句的意思是将结构体变量stu[0]的成员 num 的值强制转换为结构体类型的地址值,简单说就是将 1001 转换为地址值并赋值给 p
printf("结构体的大小:%d\n", sizeof(struct Student)); //取得结构体的大小 28
printf("%d\n", p); //输出指针 p 的值
printf("%d\n", p + 1); //输出指针 p + 1 的值
printf("\n");
p = (struct Student*)&stu[0].num;
//将结构体变量stu[0] 的成员 num 的地址 强制转换为结构体类型赋给指针变量p
printf("%d\n", *p); //输出指针 p 所指向的地址的内容
printf("%d\n",*(p + 1));//输出指针 p + 1 所指向的地址的内容
return 0;
}