首页 > 编程语言 > 详细

C/C++系列之复杂引用

时间:2019-11-27 09:35:03      阅读:86      评论:0      收藏:0      [点我收藏+]

以struct类型为例:

  • 引用
#include"iostream"
#include<string>
using namespace std;
struct mycoach
{
    string name;
    int age;
};

void printinfo1(mycoach &cpc)
{
    //参数是mycoach实例的别名,指向入参的真实地址,所以一改入参的值也跟着改
    cpc.name = "陈培昌";
}

void main()
{
    mycoach coach1;
    coach1.name = "徐晓冬";
    printinfo1(coach1);
    cout << "这位神秘嘉宾是" << coach1.name << endl;//陈培昌
    system("pause");
}

输出结果:

技术分享图片

 

  •  形参传入----可以预见这种方式不会改变struct实例的值
#include"iostream"
#include<string>
using namespace std;
struct mycoach
{
    string name;
    int age;
};

void printinfo1(mycoach cpc)
{
    //参数是mycoach实例的别名,指向入参的真实地址,所以一改入参的值也跟着改
    cpc.name = "陈培昌";
}

void main()
{
    mycoach coach1;
    coach1.name = "徐晓冬";
    printinfo1(coach1);
    cout << "这位神秘嘉宾是" << coach1.name << endl;
    system("pause");
}

输出结果:

技术分享图片

 

  •  指针---效果同引用
#include"iostream"
#include<string>
using namespace std;
struct mycoach
{
    string name;
    int age;
};

void printinfo3(mycoach *cpc)
{
    //和引用效果一样,入参为指针类型,可以更改指向地址的数据
    cpc->age = 40;
    cout << "hello, myname is " << cpc->name << "今年芳龄" << cpc->age << endl;
}

void main()
{
    mycoach coach1;
    coach1.name = "徐晓冬";
    mycoach *xxd = &coach1;
    printinfo3(xxd);
    cout << "这位神秘嘉宾是" << coach1.name << endl;
    system("pause");
}

输出结果:

技术分享图片

 

 

 通过代码可以看出,函数中传入的指针和struct实例处于同一内存地址上

#include"iostream"
#include<string>
using namespace std;
struct mycoach
{
    string name;
    int age;
};

void printinfo3(mycoach *cpc)
{
    //和引用效果一样,入参为指针类型,可以更改指向地址的数据
    cpc->age = 40;
    cout << "hello, myname is " << cpc->name << "今年芳龄" << cpc->age << endl;
    printf("内存地址是%d\n",cpc);
}

void main()
{
    mycoach coach1;
    coach1.name = "徐晓冬";
    mycoach *xxd = &coach1;
    printinfo3(xxd);
    cout << "这位神秘嘉宾是" << coach1.name << endl;
    printf("struct实例地址是%d\n", &coach1);
    system("pause");
}

技术分享图片

 

C/C++系列之复杂引用

原文:https://www.cnblogs.com/saintdingspage/p/11939309.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!