看板 C_and_CPP 關於我們 聯絡資訊
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) devc 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) 問題(Question): 餵入的資料(Input): 預期的正確結果(Expected Output): 錯誤結果(Wrong Output): 程式碼(Code):(請善用置底文網頁, 記得排版) #include <stdio.h> int main(int argc, char *argv[]) { char a; printf("%d\n",sizeof(a)); char *b=&a; printf("%d\n",sizeof(b)); int *c=&a; printf("%d\n",sizeof(c)); return 0; } 補充說明(Supplement): 剛學指標, 想看一下系統char佔幾byte,想看指針在int char各佔幾byte 請問這邊sizeof內寫abc對嗎? 我印出來是1 4 4 => 我windows是32-bit so.........對? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.243.157.65 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1439553705.A.DCC.html
IcecreamHsu: sizeof(*b)和sizeof(b)不一樣 08/14 21:29
MOONRAKER: 不然你覺得是多少。 08/14 21:55
GooLoo: 回I大:sizeof內*b和b這邊正是我沒把我的地方 08/14 22:07
GooLoo: 回M大:我的對是指..."我得4跟我預期相同, 所以寫b是對的囉? 08/14 22:08
GooLoo: 因為擔心是運氣好,剛好是4,因為是要用*b還是b沒把握 08/14 22:09
※ 編輯: GooLoo (111.243.157.65), 08/14/2015 22:10:23
MOONRAKER: 又不是在考試,有什麼把不把握的,何不通通都測一測 08/14 22:12
GooLoo: 剛試sizeof(*b)是1, 這1好像是資料大小,不是指標變數大小 08/14 22:13
MOONRAKER: b *b c *c都測一測 08/14 22:13
GooLoo: 也是!哈~~剛試了一下, 好像有點通了! 08/14 22:14
GooLoo: 感謝^^ 08/14 22:16
anyoiuo: *c是有問題的,因為只有1 byte你卻讀了4 byte 08/17 14:58
anyoiuo: 但應用在sizeof Macro上是沒問題,只是提醒你形態要注意 08/17 15:01