作者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/cn.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