看板 C_and_CPP 關於我們 聯絡資訊
宣告的看法 第一個應該看得懂 第二個 int *ptr=num;(int *ptr=(int *)num;) =>*ptr=*num; =>ptr=num(ptr,num代表address) 第三個 int *ptr=#(int *ptr=(int *)#) =>*ptr=*# =>ptr=# 有不正確觀念的地方請指教~~" ※ 引述《Savate (整個湖面只看得到101大樓)》之銘言: : 整篇文的 num都是整數型態 ptr是指標 : 1. int *ptr; : ptr=# : 2. int *ptr=num; : 3. int *ptr=# : 請問 以上哪個宣告方式才對呢 : 我的裡解是 理論上第三種才是錯的呀 : 為什麼會是對的呢 : 我還自作聰明(?)在書上標注說第三種是多打一個 & : 因為黃色那行關係 : 我以為 ptr=# 和 *ptr=num; 是對等關係 : &不是取位址嗎 *不是取值嗎(這是我個人的解讀) : 所以我才會奇怪第三種是什麼東西?? : 然後我又疑問 可以這樣寫嗎? : int num; : int ptr=# -- ※ 發信站: 批踢踢實業坊(ptt.cc) ※ 編輯: FAITHY 來自: 203.18.50.4 (05/13 17:31)
VictorTom:總覺得不那麼好懂, 直接從語意去解釋不好嗎?_? 05/13 17:46
nowar100:我覺得看習慣就會很自然而然覺得"就是這樣"了 XD 05/13 19:35
gg1122:不好意思 我請問一個基本問題 關於第三的 ptr是裝num位置 05/13 22:08
gg1122:我用*ptr 去印 應該印的出num的值才對 為什麼程式會掛掉? 05/13 22:09
gg1122:謝謝 05/13 22:09
loveme00835:ptr 要 assign 一個位址給他才能dereference喔! 05/13 22:31
gg1122:initial *ptr的位址嗎 ? *ptr=NULL ? 關於三 強制取出位址 05/13 23:09
gg1122:不能反追回去num 的值嗎 ? 05/13 23:10
VictorTom:int num; int *ptr=&num; cout<<*ptr; // 這樣是可以的 05/13 23:15
VictorTom:當然num最好先init一下, 這樣*ptr印num的值是可以的.... 05/13 23:16
VictorTom:你程式掛掉是寫出了怎樣的code?? 05/13 23:16
gg1122:我的num 用的是char 型態 印出來*ptr為-89XXXXX的 05/13 23:55
gg1122:應該是型態 不同的關係 .... 05/13 23:56
VictorTom:你是用VC嗎?? 看起來你的char應該沒有init. 05/14 00:06
VictorTom:另外, num是char只有1 byte, *ptr這個dereference的動作 05/14 00:07
VictorTom:卻需要4 byte(如果int是4 byte), 所以會解出什麼不知道 05/14 00:07
VictorTom:當掉了也不奇怪~_~ 05/14 00:08
gg1122:3Q 05/14 19:01