[問題] c++ 指標取值

看板C_and_CPP (C/C++)作者 (腳步)時間2年前 (2022/06/07 17:26), 編輯推噓4(4011)
留言15則, 6人參與, 2年前最新討論串1/1
初學c++ 有個問題想問 為什麼變數需要取值符號 物件類別不用 int var = 5; int * c1 = &var; std::cout << c1 << std::endl; <---記憶體為址 std::cout << *c1 << std::endl; <---數值5 occupation *p1; p1 = new occupation(); p1->str = 20; std::cout << p1 << std::endl; <---記憶體位址 std::cout << p1->str << std::endl; <---數值20 <---他為什麼不用*取值符號 在前面? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 59.120.119.169 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1654593976.A.D1A.html

06/07 17:44, 2年前 , 1F
std::cout << 是看 p1->str 的型別(我猜是 int)
06/07 17:44, 1F

06/07 17:44, 2年前 , 2F
決定怎麼輸出的
06/07 17:44, 2F

06/07 17:45, 2年前 , 3F

06/07 17:51, 2年前 , 4F
你用「->」不就是*的效果了?
06/07 17:51, 4F

06/07 17:51, 2年前 , 5F
不然一般value叫法不是「.」來著?
06/07 17:51, 5F

06/07 17:52, 2年前 , 6F
憑印象回答,好像搞錯了,請糾正我謝謝
06/07 17:52, 6F

06/07 18:39, 2年前 , 7F
樓上正解, 對指標 a 來說 a->b 等同於 (*a).b
06/07 18:39, 7F

06/08 02:15, 2年前 , 8F
你可能是寫硬體語言習慣了吧,因為c++有名字的是左
06/08 02:15, 8F

06/08 02:15, 2年前 , 9F
值,左值已經
06/08 02:15, 9F

06/08 02:15, 2年前 , 10F
是值了,當然沒必要dereference。
06/08 02:15, 10F

06/08 10:55, 2年前 , 11F
c1指向var,但p1不是指向str,應該是這個搞混了
06/08 10:55, 11F

06/09 22:39, 2年前 , 12F
只要記得指標取成員用->
06/09 22:39, 12F

06/09 22:39, 2年前 , 13F
變數取成員用.就好了
06/09 22:39, 13F

06/09 22:39, 2年前 , 14F
後者等同於*ptr. str,因為解參照後就從指標變成變
06/09 22:39, 14F

06/09 22:39, 2年前 , 15F
數了
06/09 22:39, 15F
文章代碼(AID): #1YdncuqQ (C_and_CPP)
文章代碼(AID): #1YdncuqQ (C_and_CPP)