[爆卦]sizeof指標是什麼?優點缺點精華區懶人包

為什麼這篇sizeof指標鄉民發文收入到精華區:因為在sizeof指標這個討論話題中,有許多相關的文章在討論,這篇最有參考價值!作者winout0112 (阿普)看板C_and_CPP標題[問題] 指標變數sizeof大小時間S...


開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
GCC




問題(Question):

以下的程式我執行過,都是回傳四

char *a;
int *b;
long *c;
void *d;

printf("a = %d",sizeof(a));
printf("b = %d",sizeof(b));
printf("c = %d",sizeof(c));
printf("d = %d",sizeof(d));


請問各位大大,對指標變數進行sizeof的話,都是四嗎??

那為何都是四?? 謝謝






















--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.132.221.197
bibo9901:指標裝的是記憶體位置, 大小當然都一樣 10/06 21:06
singlovesong:是因為那樣子是問指標的size吧?所以是4bytes 10/06 21:06
singlovesong:不過有些機器好像是8bytes 10/06 21:07
SocketAM2:64位元的作業系統是8 10/06 21:08
SocketAM2:不過有些embeded上會有怪事,例如16bit的OS配20bit ptr 10/06 21:11
stupid0319:最近在指標迷航的人真多 10/06 21:12
winout0112:不過怪的是我機器是64bit的server,不知跟gcc版本有無 10/06 21:15
winout0112:關連 10/06 21:15
stupid0319:編成32bit程式去跑的嗎? 10/06 21:41
diabloevagto:不要把ptr本身,跟他指向的東西搞混 10/06 22:25
littleshan:不同型別的指標,大小不一定相同 10/06 22:43
diabloevagto:同樣編譯環境、不同型別的指標,大小會不同? 10/06 22:51
SocketAM2:我是小嫩嫩,我以為樓上說的情況大小會是固定的,不是 10/06 23:14
SocketAM2:嗎? 有請高手解說 10/06 23:15
littleshan:標準沒規定不同型別指標大小一定相同 10/07 03:02
littleshan:最簡單的例子:member function pointer 10/07 03:02
littleshan:很多場合是一樣大沒錯,但只要你做了一樣大的假設 10/07 03:06
littleshan:就要有這段code並不portable的心理準備 10/07 03:06
tinlans:大部分/一般場合可以預期一般指標和 ptrdiff_t 或 long 10/07 09:09
tinlans:一樣寬。自己判斷看看怎麼玩吧 10/07 09:09
cobrasgo:提醒一下sizeof是operator喔,有注意的人應該不多 10/07 14:48
diabloevagto:感謝l大提醒,原來標準內沒有寫...又是一個坑 10/08 23:25
s3748679:那個 不懂sizeof是operator會影響什麼.. 有坑!? 10/09 00:42

你可能也想看看

搜尋相關網站