作者GooLoo (平凡)
看板C_and_CPP
標題[問題] 指標
時間Fri Aug 14 20:01:43 2015
開發平台(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