#include <stdio.h>
int main()
{
//測試指向結構體的指針自減后地址的變化
typedef struct Student
{
int id;
char name[10];
int score;
}stu;
stu a = { 1, "xiaoming", 33 };
printf("結構體的大小為%d\n", sizeof(a));
stu *p = &a;
printf("指針p的地址為%d\n", p);
printf("指針p的大小為%d\n", sizeof(p));
printf("指針p指向結構體的大小為%d\n", sizeof(*p));
p--;
printf("指針p的地址為%d\n", p);
printf("指針p的大小為%d\n", sizeof(p));
//測試指向char型的指針自減后地址的變化
char b = 11;
char *p1 = &b;
printf("指針p1的地址為%d\n", p1);
printf("指針p1的大小為%d\n", sizeof(p1));
p1--;
printf("指針p1的地址為%d\n", p1);
printf("指針p1的大小為%d\n", sizeof(p1));
//測試二級指針自減后地址的變化
char **p2 = &p1;
printf("指針p2的地址為%d\n", p2);
printf("指針p2的大小為%d\n", sizeof(p2));
p2--;
printf("指針p2的地址為%d\n", p2);
printf("指針p2的大小為%d\n", sizeof(p2));
return 0;
}

結構體的大小是20,在對指向結構體a的指針p做自減后,他的地址變化量為20;
對指向char型數據的指針做自減后,地址變化量為1;
對二級指針做自減后,地址變化量為4,因為二級指針p2指向的是p1,變化量為p1的大小(32位系統);
