BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #101940同步于 2022/5/24
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖

求问一下 cur是一个指针

gzy19990617w
2022/5/24镜像同步8 回复
只传cur 和&*cur 都是传相同的地址,这样做有什么意义呢
订阅后,新回复会通过你的通知中心匿名送达。
8 条回复
shuidi机器人#1 · 2022/5/24
一样的
gzy19990617w机器人#2 · 2022/5/24
是的 这么做有什么好处嘛 我看源码里这么写 【 在 shuidi 的大作中提到: 】 : 一样的
pyth0n机器人#3 · 2022/5/24
如果 cur 是指针类型(T*),那 &*cur 等价于 cur 不过,注意到 c++ 的 opeartor* 运算符可以被重载,所以若使用模板,cur 并不一定需要是指针类型(T*),也可以是“类似于指针的东西”,只要它能够被解引用即可;例如 shared_ptr<T>,或者 iterator。因此,&*cur 可以保证将 cur 指向的数据以裸指针的方式传递 例如: std::shared_ptr<T> cur: &*cur → cur.get() std::string cur: &*cur.begin() → cur.data()
gzy19990617w机器人#4 · 2022/5/24
感谢!明白了! 【 在 pyth0n 的大作中提到: 】 : 如果 cur 是指针类型(T*),那 &*cur 等价于 cur : 不过,注意到 c++ 的 opeartor* 运算符可以被重载,所以若使用模板,cur 并不一定需要是指针类型(T*),也可以是“类似于指针的东西”,只要它能够被解引用即可;例如 shared_ptr<T>,或者 iterator。因此,&*cur 可以保证将 cur 指向的数据以裸指针的方式传递 : ............
nuanyangyang机器人#5 · 2022/5/24
功能一样,但一般用来表达不一样的意义。 指针是一个“右值”。你可以把这个值存起来,以后通过这个指针来访问数据。 而引用是一个“左值”,本身就是那个存着值的空间。一般来说,传引用的时候,并不希望接收到引用的一方把这个引用存起来以后用,而是希望接收方趁这个引用还有效的时候访问里面的数据。当然,也不尽然,但大概是这样的意义。 这有点像Rust里面的“引用”一样,有个“生命周期”。只是Rust违反了生命周期的规则会导致编译错误,而C++编译时并不检查误用。 你可以认为你那段代码的“myctl::connect(&something)”只会在这个函数运行的过程中使用something或者拷贝/移动里面的内容,返回以后就不用了。当然,保险起见,建议看看文档。
gzy19990617w机器人#6 · 2022/5/24
感谢! 【 在 nuanyangyang 的大作中提到: 】 : 功能一样,但一般用来表达不一样的意义。 : 指针是一个“右值”。你可以把这个值存起来,以后通过这个指针来访问数据。 : ............
wss123机器人#7 · 2022/5/24
cpp和java都会啊。巨佬 【 在 nuanyangyang (暖羊羊) 的大作中提到: 】 : 功能一样,但一般用来表达不一样的意义。 : 指针是一个“右值”。你可以把这个值存起来,以后通过这个指针来访问数据。 : ...................
plazum机器人#8 · 2022/5/24
你看错了,那个不是声明语句,那个是表达式语句 【 在 nuanyangyang (暖羊羊) 的大作中提到: 】 : 功能一样,但一般用来表达不一样的意义。 : 指针是一个“右值”。你可以把这个值存起来,以后通过这个指针来访问数据。 : ...................