我测试了一个小程序,它是写的,问题是为什么指向一个值的指针和指向第一个pointer.But的指针之间有12个字节的差异,如果你查看其他指针地址,每次只有8个字节的差异。我执行这个程序多次,我总是看到这个difference.Can,有人能告诉我这是什么原因吗?提前谢谢。
#include<stdio.h>
#include<stdlib.h>
int main(void)
{
int val;
int *ptr;
int **ptrptr;
int ***ptrptrptr;
int ****ptrptrptrptr;
int *****ptrptrptrptrptr;
val=10;
ptr=&val;
ptrptr=&ptr;
ptrptrptr=&ptrptr;
ptrptrptrptr=&ptrptrptr;
ptrptrptrptrptr=&ptrptrptrptr;
printf("Value-%d\n",val);
printf("Value address - %d\n",ptr);
printf("Pointer address - %d\n",ptrptr);
printf("Pointer Pointer Address -%d\n",ptrptrptr);
printf("Pointer Pointer Pointer Address -%d\n",ptrptrptrptr);
printf("Pointer Pointer Pointer Pointer Address -%d\n",ptrptrptrptrptr);
return 0;
}
结果是:
Value-10
Value address - -1308521884
Pointer address - -1308521896
Pointer Pointer Address --1308521904
Pointer Pointer Pointer Address --1308521912
Pointer Pointer Pointer Pointer Address --1308521920
发布于 2012-04-29 05:29:11
这只是你的编译器选择的堆栈布局,f.e。这可能是因为对齐的原因。事情很可能仍然适用于其他布局。
附注,您应该使用%p
来打印地址。
https://stackoverflow.com/questions/10367663
复制相似问题