[問題] 指標變數sizeof大小

看板C_and_CPP作者 (阿普)時間13年前 (2012/10/06 21:02), 編輯推噓8(8015)
留言23則, 10人參與, 最新討論串1/2 (看更多)
開發平台(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

10/06 21:06, , 1F
指標裝的是記憶體位置, 大小當然都一樣
10/06 21:06, 1F

10/06 21:06, , 2F
是因為那樣子是問指標的size吧?所以是4bytes
10/06 21:06, 2F

10/06 21:07, , 3F
不過有些機器好像是8bytes
10/06 21:07, 3F

10/06 21:08, , 4F
64位元的作業系統是8
10/06 21:08, 4F

10/06 21:11, , 5F
不過有些embeded上會有怪事,例如16bit的OS配20bit ptr
10/06 21:11, 5F

10/06 21:12, , 6F
最近在指標迷航的人真多
10/06 21:12, 6F

10/06 21:15, , 7F
不過怪的是我機器是64bit的server,不知跟gcc版本有無
10/06 21:15, 7F

10/06 21:15, , 8F
關連
10/06 21:15, 8F

10/06 21:41, , 9F
編成32bit程式去跑的嗎?
10/06 21:41, 9F

10/06 22:25, , 10F
不要把ptr本身,跟他指向的東西搞混
10/06 22:25, 10F

10/06 22:43, , 11F
不同型別的指標,大小不一定相同
10/06 22:43, 11F

10/06 22:51, , 12F
同樣編譯環境、不同型別的指標,大小會不同?
10/06 22:51, 12F

10/06 23:14, , 13F
我是小嫩嫩,我以為樓上說的情況大小會是固定的,不是
10/06 23:14, 13F

10/06 23:15, , 14F
嗎? 有請高手解說
10/06 23:15, 14F

10/07 03:02, , 15F
標準沒規定不同型別指標大小一定相同
10/07 03:02, 15F

10/07 03:02, , 16F
最簡單的例子:member function pointer
10/07 03:02, 16F

10/07 03:06, , 17F
很多場合是一樣大沒錯,但只要你做了一樣大的假設
10/07 03:06, 17F

10/07 03:06, , 18F
就要有這段code並不portable的心理準備
10/07 03:06, 18F

10/07 09:09, , 19F
大部分/一般場合可以預期一般指標和 ptrdiff_t 或 long
10/07 09:09, 19F

10/07 09:09, , 20F
一樣寬。自己判斷看看怎麼玩吧
10/07 09:09, 20F

10/07 14:48, , 21F
提醒一下sizeof是operator喔,有注意的人應該不多
10/07 14:48, 21F

10/08 23:25, , 22F
感謝l大提醒,原來標準內沒有寫...又是一個坑
10/08 23:25, 22F

10/09 00:42, , 23F
那個 不懂sizeof是operator會影響什麼.. 有坑!?
10/09 00:42, 23F
文章代碼(AID): #1GS2lcCm (C_and_CPP)
文章代碼(AID): #1GS2lcCm (C_and_CPP)