作者stonehomelaa (清新、健康、專業)
看板C_and_CPP
標題Re: [問題] 二維陣列的陣列名稱
時間Sun Jul 24 22:37:21 2011
※ 引述《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