[問題] 指標

作者: GooLoo (平凡)   2015-08-14 20:01:43
開發平台(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.........對?
作者: IcecreamHsu (冰淇淋)   2015-08-14 21:29:00
sizeof(*b)和sizeof(b)不一樣
作者: MOONRAKER (㊣牛鶴鰻毛人)   2015-08-14 21:55:00
不然你覺得是多少。
作者: GooLoo (平凡)   2015-08-14 22:07:00
回I大:sizeof內*b和b這邊正是我沒把我的地方回M大:我的對是指..."我得4跟我預期相同, 所以寫b是對的囉?因為擔心是運氣好,剛好是4,因為是要用*b還是b沒把握
作者: MOONRAKER (㊣牛鶴鰻毛人)   2015-08-14 22:12:00
又不是在考試,有什麼把不把握的,何不通通都測一測
作者: GooLoo (平凡)   2015-08-14 22:13:00
剛試sizeof(*b)是1, 這1好像是資料大小,不是指標變數大小
作者: MOONRAKER (㊣牛鶴鰻毛人)   2015-08-14 22:13:00
b *b c *c都測一測
作者: GooLoo (平凡)   2015-08-14 22:14:00
也是!哈~~剛試了一下, 好像有點通了!感謝^^
作者: anyoiuo   2015-08-17 14:58:00
*c是有問題的,因為只有1 byte你卻讀了4 byte但應用在sizeof Macro上是沒問題,只是提醒你形態要注意

Links booklink

Contact Us: admin [ a t ] ucptt.com