我測試了一個寫在下面的小程序。我的問題是爲什麼指向一個值的指針和指向第一個指針的指針之間存在12個字節的差異。但是如果查看其他指針地址只有每一個再寄一次執行該程序多次,始終我看到這個difference.Can誰能解釋我可能是什麼原因在此先感謝8個字節的區別..指針地址值的變化
#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
Whay編譯器,什麼鏈接器,什麼處理器? 32或64位?什麼是整數?它有多大?它真的很重要嗎?我的意思是,你甚至注意到了什麼? – 2012-04-28 21:31:29
有趣的是,將第一個int更改爲long可以像您期望的那樣工作。 – strkol 2012-04-28 21:51:18
雅它長時間工作...... :) – Teja 2012-04-28 21:55:55