看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《Favonia (小西風最乖了*^^*)》之銘言: : 想要補充三點 LPH66 大沒有提到的東西(但我寫的可能不適合初學者讀 orz) : : 第一個,printf 的 %p 只能用來印 void* 不能用來印其他種指標!(感覺可以 : 寫一篇「如何印指標」到 FAQ 裡面了...)編譯器沒辦法幫你轉型成 void*. : → james732:第一個我很意外... void *與int *我以為都只是一個'值' 07/24 22:29 : → james732:對於 %p 來說,void *與int *會有什麼差別呢? 07/24 22:29 幫補充一下 C standard 裡頭對於 %p 是這樣子講的 p The argument shall be a pointer to void. The value of the pointer is converted to a sequence of printing characters, in an implementation-defined manner. -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.32.213.253
james732:也就是說拿%p去印int *是未定義行為...我以前都不知道orz 07/24 22:38
stonehomelaa:所以應該用 %x 來印 07/24 22:43
stonehomelaa:一些書籍都用 %p,執行也沒差 我就不懂了XD 07/24 22:45
stonehomelaa:或者轉成 void * 用 %p 來印 07/24 22:46
Favonia:還有一個方法是轉成 intptr_t 來印(會印出什麼不知道xD) 07/25 00:32
Favonia:如果要完全符合標準,用 %x 也不行喔,他是印unsigned int 07/25 01:16