011_指针的引用

/*
    指针的引用
*/
#if 1
struct Teacher
{
    char name[64];
    int age;
};

int getTeacher(Teacher **p)
{
    if (p == NULL)
    {
        return -1;
    }
    Teacher *tmp;
    tmp = (Teacher *)malloc(sizeof(Teacher) * 1);
    if (tmp == NULL)
    {
        return -2;
        printf("malloc failed\n");
    }
    tmp->age = 1111;
    *p = tmp;//*p就像一把钥匙,通过地址去打开一扇门,*p放在等号的左边,相当于修改内存的值。
    //*p放在等号的右边相当于从内存中拿值
}

//指针的引用 做函数参数
int getTeacher2(Teacher* &myp)
{
    myp = (Teacher *)malloc(sizeof(Teacher) * 1);
    if (myp == NULL)
    {
        return -2;
        printf("malloc failed\n");
    }
    myp->age = 2222;
}

void FreeTeacher(Teacher *pT1)
{
    if (pT1 == NULL)
    {
        return;
    }
    free(pT1);
}

void test()
{
    Teacher *pT1;
    //1 c语言中的二级指针
    getTeacher(&pT1);
    cout << "age = " << pT1->age << endl;
    FreeTeacher(pT1);

    //c++中的引用(指针的引用)
    //引用的本质 间接赋值后2个条件 让c++编译器帮我们程序员做了。
    getTeacher2(pT1);
    cout << "age = " << pT1->age << endl;
    FreeTeacher(pT1);

}
#endif

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值