作者LaughPoint (腳步)
看板C_and_CPP
標題[心得] c++ 指標取值
時間Tue Jun 7 17:26:14 2022
初學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://webptt.com/m.aspx?n=bbs/C_and_CPP/M.1654593976.A.D1A.html
1F:→ nh60211as: std::cout << 是看 p1->str 的型別(我猜是 int) 06/07 17:44
2F:→ nh60211as: 決定怎麼輸出的 06/07 17:44
4F:推 GlassesKJ: 你用「->」不就是*的效果了? 06/07 17:51
5F:→ GlassesKJ: 不然一般value叫法不是「.」來著? 06/07 17:51
6F:→ GlassesKJ: 憑印象回答,好像搞錯了,請糾正我謝謝 06/07 17:52
7F:推 LPH66: 樓上正解, 對指標 a 來說 a->b 等同於 (*a).b 06/07 18:39
8F:推 OnlyRD: 你可能是寫硬體語言習慣了吧,因為c++有名字的是左 06/08 02:15
9F:→ OnlyRD: 值,左值已經 06/08 02:15
10F:→ OnlyRD: 是值了,當然沒必要dereference。 06/08 02:15
11F:推 shibin: c1指向var,但p1不是指向str,應該是這個搞混了 06/08 10:55
12F:→ serenitynice: 只要記得指標取成員用-> 06/09 22:39
13F:→ serenitynice: 變數取成員用.就好了 06/09 22:39
14F:→ serenitynice: 後者等同於*ptr. str,因為解參照後就從指標變成變 06/09 22:39
15F:→ serenitynice: 數了 06/09 22:39