[問題] 一個小小的指標問題

看板C_and_CPP作者 (安東尼)時間13年前 (2011/08/11 23:16), 編輯推噓3(3025)
留言28則, 7人參與, 最新討論串1/1
問題(Question): int c=6; int *b=&c; printf("b=%p \n",b); printf("b=%d \n",b); 我想問 如果我想看b這個指標裡面放甚麼 我這兩個printf 倒底差在哪邊 哪個才是真正b這個指標放的東西 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.115.156.206

08/11 23:17, , 1F
標準答案是第一個, 但其實大部份情形大概兩個都對
08/11 23:17, 1F

08/11 23:18, , 2F
只是一個用 16 進位表示一個用 10 進位表示而已
08/11 23:18, 2F

08/11 23:19, , 3F
請問哪個是十進位 是下面那個嗎
08/11 23:19, 3F

08/11 23:20, , 4F
唔, 一樓用詞修正一下: 也許不是大部份 不過現代PC多如此
08/11 23:20, 4F

08/11 23:21, , 5F
用 %d 印出來的東西(不管它是什麼)當然是十進位
08/11 23:21, 5F

08/11 23:24, , 6F
%p主要是印出位置,不過的確是用16進位表示
08/11 23:24, 6F

08/11 23:27, , 7F
好的 謝謝^^
08/11 23:27, 7F

08/11 23:33, , 8F
標準答案是...都錯 lol 你只能印 void* (或是等價的東西)
08/11 23:33, 8F

08/11 23:33, , 9F
位置不一定是 16 位元顯示。你的電腦愛怎麼顯示都行。
08/11 23:33, 9F

08/11 23:35, , 10F
但是大部分電腦上以上皆成立
08/11 23:35, 10F

08/11 23:39, , 11F
最可攜的寫法是把 b 轉型成 (void*) 再給 printf
08/11 23:39, 11F

08/11 23:40, , 12F
然後不要假設會用什麼格式印出來。
08/11 23:40, 12F

08/11 23:42, , 13F
Favonia你 "16位元顯示"是指16進位表示嗎
08/11 23:42, 13F

08/11 23:42, , 14F
樓上:對... 我打錯了 orz
08/11 23:42, 14F

08/11 23:43, , 15F
所以只能印(void*)嗎? 為什麼?可以說清楚一點嗎?
08/11 23:43, 15F

08/11 23:43, , 16F
或者回一篇文? XD
08/11 23:43, 16F

08/11 23:44, , 17F
可以參考 #1EB157xt 我個人很希望直接進 FAQ xDDD
08/11 23:44, 17F

08/11 23:45, , 18F
好 我去讀那篇 謝謝
08/11 23:45, 18F

08/11 23:45, , 19F
還有我覺得我指標一直沒有很好 你有沒有推薦的書?
08/11 23:45, 19F

08/11 23:46, , 20F
我有一次去台大偷聽劉邦峰教授的課
08/11 23:46, 20F

08/11 23:46, , 21F
可是他用指標實在是太厲害了 我跟不上 沒學到覺得很可惜
08/11 23:46, 21F

08/11 23:48, , 22F
你有推薦甚麼資料可以把指標細節講得很完整嗎?
08/11 23:48, 22F

08/11 23:50, , 23F
有本書叫Point on C 可以看看
08/11 23:50, 23F

08/11 23:51, , 24F
抱歉 書名打錯 應該是pointers on c 才對
08/11 23:51, 24F

08/11 23:52, , 25F
噢噢 有找到了 想辦法去弄一本來看 謝謝
08/11 23:52, 25F

08/11 23:57, , 26F
對了我現在這時間用的電腦 %d 只能印出指標的一部分 xD
08/11 23:57, 26F

08/11 23:59, , 27F
都沒人在看 <inttypes.h> 嗎? 我才懶得鳥他可不可以跑
08/11 23:59, 27F

08/11 23:59, , 28F
ndhucsie:不好意思我很少看書耶,但版上應該很多人可以回xD
08/11 23:59, 28F
文章代碼(AID): #1EG_8rw5 (C_and_CPP)