关于栈中变量分配的问题
写了个小程序,想看看局部变量包括指针变量在栈中的分配地址
程序代码:
#include <stdio.h>
/*
test the pointer to pointer
*/
int main()
{
char c;
char *p1;
char **p2;
p1 = &c;
p2 = &p1;
printf("%p\n", &c);
//printf("%p\n", p1);
printf("%p\n", &p1);
//printf("%p\n", p2);
printf("%p\n", &p2);
return 0;
}
输出结果是
0022FF1F
0022FF18
0022FF14
我知道在栈中,变量的分配是由高地址向低地址顺序分配,而且在32位系统中,指针变量分配四个字节,所以我明白p1和p2的地址相差4个值,但是不明白c的地址和p1的地址为什么相差这么多?按理说应该相差1的。
我将char c;改为int i;后,i的地址是0022FF1C,和我的想法就一致了。
请教字符c的地址为什么是这样?









