看板 C_and_CPP 關於我們 聯絡資訊
初學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
nh60211as: std::cout << 是看 p1->str 的型別(我猜是 int) 06/07 17:44
nh60211as: 決定怎麼輸出的 06/07 17:44
GlassesKJ: 你用「->」不就是*的效果了? 06/07 17:51
GlassesKJ: 不然一般value叫法不是「.」來著? 06/07 17:51
GlassesKJ: 憑印象回答,好像搞錯了,請糾正我謝謝 06/07 17:52
LPH66: 樓上正解, 對指標 a 來說 a->b 等同於 (*a).b 06/07 18:39
OnlyRD: 你可能是寫硬體語言習慣了吧,因為c++有名字的是左 06/08 02:15
OnlyRD: 值,左值已經 06/08 02:15
OnlyRD: 是值了,當然沒必要dereference。 06/08 02:15
shibin: c1指向var,但p1不是指向str,應該是這個搞混了 06/08 10:55
serenitynice: 只要記得指標取成員用-> 06/09 22:39
serenitynice: 變數取成員用.就好了 06/09 22:39
serenitynice: 後者等同於*ptr. str,因為解參照後就從指標變成變 06/09 22:39
serenitynice: 數了 06/09 22:39