Re: [問題] 關於指標的宣告

看板C_and_CPP作者 (被風吹過的夏天)時間15年前 (2010/05/13 17:29), 編輯推噓7(7011)
留言18則, 4人參與, 最新討論串2/2 (看更多)
宣告的看法 第一個應該看得懂 第二個 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)

05/13 17:46, , 1F
總覺得不那麼好懂, 直接從語意去解釋不好嗎?_?
05/13 17:46, 1F

05/13 19:35, , 2F
我覺得看習慣就會很自然而然覺得"就是這樣"了 XD
05/13 19:35, 2F

05/13 22:08, , 3F
不好意思 我請問一個基本問題 關於第三的 ptr是裝num位置
05/13 22:08, 3F

05/13 22:09, , 4F
我用*ptr 去印 應該印的出num的值才對 為什麼程式會掛掉?
05/13 22:09, 4F

05/13 22:09, , 5F
謝謝
05/13 22:09, 5F

05/13 22:31, , 6F
ptr 要 assign 一個位址給他才能dereference喔!
05/13 22:31, 6F

05/13 23:09, , 7F
initial *ptr的位址嗎 ? *ptr=NULL ? 關於三 強制取出位址
05/13 23:09, 7F

05/13 23:10, , 8F
不能反追回去num 的值嗎 ?
05/13 23:10, 8F

05/13 23:15, , 9F
int num; int *ptr=&num; cout<<*ptr; // 這樣是可以的
05/13 23:15, 9F

05/13 23:16, , 10F
當然num最好先init一下, 這樣*ptr印num的值是可以的....
05/13 23:16, 10F

05/13 23:16, , 11F
你程式掛掉是寫出了怎樣的code??
05/13 23:16, 11F

05/13 23:55, , 12F
我的num 用的是char 型態 印出來*ptr為-89XXXXX的
05/13 23:55, 12F

05/13 23:56, , 13F
應該是型態 不同的關係 ....
05/13 23:56, 13F

05/14 00:06, , 14F
你是用VC嗎?? 看起來你的char應該沒有init.
05/14 00:06, 14F

05/14 00:07, , 15F
另外, num是char只有1 byte, *ptr這個dereference的動作
05/14 00:07, 15F

05/14 00:07, , 16F
卻需要4 byte(如果int是4 byte), 所以會解出什麼不知道
05/14 00:07, 16F

05/14 00:08, , 17F
當掉了也不奇怪~_~
05/14 00:08, 17F

05/14 19:01, , 18F
3Q
05/14 19:01, 18F
文章代碼(AID): #1BwyPXge (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1BwyPXge (C_and_CPP)