为了账号安全,请及时绑定邮箱和手机立即绑定

你好,请问在C++中可以这样赋值吗?为什么?

你好,请问在C++中可以这样赋值吗?为什么?

C++ C
30秒到达战场 2022-02-11 17:07:04
struct stu *p_boy2=&boy2;这句中的*p_boy2是个结构体,而&boy2是个地址,为什么能用“=”赋值?
查看完整描述

3 回答

?
料青山看我应如是

TA贡献1772条经验 获得超8个赞

首先要理解指针的定义, 指针是什么? 不就是个标志嘛, 什么标志?地址的标志.
不管什么结构, 什么数据,在内存里都不过是000111之类的东西. 所以指针可以指向任何结构(如同邮寄东西的时候, 地址可以是个单位,建筑,街道或门牌)
struct stu *p_boy2=&boy2;
这里struct stu *p_boy2, 应该这样理解(struct stu *) p_boy2 --一个指向stu结构的指针. 或这样理解 struct stu (*p_boy2); *p_boy2是个stu结构, 由*的取值意义来看, p_boy2就是个地址了(这样理解感觉有点勉强).
所以,这句话没有问题, 因为它是两句话:
struct stu *p_boy2; //定义stu指针
p_boy2=&boy2;//指针赋值
这样理解就不会有歧异了, 但提问这需要多接触C基本文法,万事开头难.指针用好了是个很有用的东西.

查看完整回答
反对 回复 2022-02-14
?
浮云间

TA贡献1829条经验 获得超4个赞

*p_boy2是指向结构体struct stu 的指针,
struct stu *p_boy2=&boy2
是让*p_boy2指向结构体变量boy2
p_boy2里面放的是boy2的地址

查看完整回答
反对 回复 2022-02-14
?
撒科打诨

TA贡献1934条经验 获得超2个赞

“*”是指针类,后面的一大串都可以作一个识别符一大串实际也是地址

查看完整回答
反对 回复 2022-02-14
  • 3 回答
  • 0 关注
  • 158 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信