Re: [問題] 二維陣列的陣列名稱

看板C_and_CPP (C/C++)作者 (清新、健康、專業)時間13年前 (2011/07/24 22:37), 編輯推噓1(105)
留言6則, 3人參與, 最新討論串6/7 (看更多)
※ 引述《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

07/24 22:38, , 1F
也就是說拿%p去印int *是未定義行為...我以前都不知道orz
07/24 22:38, 1F

07/24 22:43, , 2F
所以應該用 %x 來印
07/24 22:43, 2F

07/24 22:45, , 3F
一些書籍都用 %p,執行也沒差 我就不懂了XD
07/24 22:45, 3F

07/24 22:46, , 4F
或者轉成 void * 用 %p 來印
07/24 22:46, 4F

07/25 00:32, , 5F
還有一個方法是轉成 intptr_t 來印(會印出什麼不知道xD)
07/25 00:32, 5F

07/25 01:16, , 6F
如果要完全符合標準,用 %x 也不行喔,他是印unsigned int
07/25 01:16, 6F
文章代碼(AID): #1EB2ucmG (C_and_CPP)
文章代碼(AID): #1EB2ucmG (C_and_CPP)