鱼C论坛

 找回密码
 立即注册
查看: 495|回复: 4

[已解决]小白求助 关于指针的引用

[复制链接]
发表于 2020-4-17 15:15:38 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
  1. #include "iostream"
  2. using std::endl;
  3. using std::cout;
  4. using std::cin;
  5. using std::string;

  6. //指针的引用

  7. struct Teacher
  8. {
  9.         int age;
  10.         string name;
  11. };

  12. void fun(Teacher*& pT)
  13. {
  14.         pT->age = 44;
  15.         pT->name = "老赵";
  16. }

  17. void main()
  18. {
  19.         Teacher* p1 = NULL; //指针p1为空,不能把p1的age 和 name赋值吗?
  20.         fun(p1);
  21.         cout << p1->age << " " << p1->name << endl;//err  出现中断的异常

  22.         Teacher* p2 = new Teacher;
  23.         fun(p2);
  24.         cout << p2->age << " " << p2->name << endl;//运行成功
  25.         system("pause");
  26. }
复制代码
最佳答案
2020-4-17 15:22:07
当然不行。简单理一理就好了。
正常来说Teacher*p=t0,t0为一个teacher对象。此时p指向t0,通过p是为t0的age和name赋值
但p指向null,你无法访问空对象的属性
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-4-17 15:22:07 From FishC Mobile | 显示全部楼层    本楼为最佳答案   
当然不行。简单理一理就好了。
正常来说Teacher*p=t0,t0为一个teacher对象。此时p指向t0,通过p是为t0的age和name赋值
但p指向null,你无法访问空对象的属性
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-17 15:31:16 From FishC Mobile | 显示全部楼层
本帖最后由 倒戈卸甲 于 2020-4-17 15:33 编辑

话说回来,你这代码写得太杂乱了,一般来说没必要去引用一个指针,指针与引用二选一使用就行了。
推荐写法,Teacher t1;然后fun函数参数类型使用引用,void fun(Teacher &t);
或者Teacher *t1=new Teacher,然后fun函数的参数传入指针,void fun(Teacher *p)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-17 15:35:59 From FishC Mobile | 显示全部楼层
不过如果你是在练习引用指针这个语法的话,那当然没问题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-17 15:47:09 | 显示全部楼层
倒戈卸甲 发表于 2020-4-17 15:35
不过如果你是在练习引用指针这个语法的话,那当然没问题

我在练习指针的引用的这个语法
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-28 04:25

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表