作者winout0112 (阿普)
看板C_and_CPP
標題[問題] 指標變數sizeof大小
時間Sat Oct 6 21:02:27 2012
開發平台(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