琴长不过时光 发表于 2020-4-17 15:15:38

小白求助 关于指针的引用

#include "iostream"
using std::endl;
using std::cout;
using std::cin;
using std::string;

//指针的引用

struct Teacher
{
        int age;
        string name;
};

void fun(Teacher*& pT)
{
        pT->age = 44;
        pT->name = "老赵";
}

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

        Teacher* p2 = new Teacher;
        fun(p2);
        cout << p2->age << " " << p2->name << endl;//运行成功
        system("pause");
}

倒戈卸甲 发表于 2020-4-17 15:22:07

当然不行。简单理一理就好了。
正常来说Teacher*p=t0,t0为一个teacher对象。此时p指向t0,通过p是为t0的age和name赋值
但p指向null,你无法访问空对象的属性

倒戈卸甲 发表于 2020-4-17 15:31:16

本帖最后由 倒戈卸甲 于 2020-4-17 15:33 编辑

话说回来,你这代码写得太杂乱了,一般来说没必要去引用一个指针,指针与引用二选一使用就行了。
推荐写法,Teacher t1;然后fun函数参数类型使用引用,void fun(Teacher &t);
或者Teacher *t1=new Teacher,然后fun函数的参数传入指针,void fun(Teacher *p)

倒戈卸甲 发表于 2020-4-17 15:35:59

不过如果你是在练习引用指针这个语法的话,那当然没问题

琴长不过时光 发表于 2020-4-17 15:47:09

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

我在练习指针的引用的这个语法
页: [1]
查看完整版本: 小白求助 关于指针的引用