文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

C++引用的定义与使用实例分析

2023-07-02 16:26

关注

这篇文章主要介绍了C++引用的定义与使用实例分析的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇C++引用的定义与使用实例分析文章都会有所收获,下面我们一起来看看吧。

解释引用

首先我们先来看一个引用的例子

int main(){int a = 10;int& Bin = a;cout << a << endl;cout << Bin << endl;cout << &a << endl;cout << &Bin << endl;}

C++引用的定义与使用实例分析

对于一个int型函数a,我们对a进行了引用,引用的新int函数叫Bin。

由他们是同一个地址可以知道,引用其实就是对同一个地址的函数,换了一个新的叫法。

相当于《水浒传》中,李逵在江湖上人称黑旋风

那么这里int a就相当于李逵,而int&Bin就相当于黑旋风。

你使用李逵和黑旋风,他都会答应,这也就相当于起外号

如下:

int main(){int a = 10;int& Bin = a;Bin += 10;cout << a << endl;cout << Bin << endl;cout << &a << endl;cout << &Bin << endl;}

C++引用的定义与使用实例分析

可以看到我们这里是对Bin进行操作,但是a的值也改变了。

同时我们也可以多个引用,可以给引用再引用(给外号再起外号)

int main(){int a = 10;int& Bin = a;int& Tian = a;int& Wei = Bin;cout << a << endl;cout << Bin << endl;cout << Tian << endl;cout << Wei << endl;cout << &a << endl;cout << &Bin << endl;cout << &Tian << endl;cout << &Wei << endl;}

C++引用的定义与使用实例分析

可以看到值和地址还是相同。

注意:引用必须同等类型

int a=10;
double&b=a;
这是错误的

引用的作用

非常经典的引用就是交换两个数的值。

这是我们c语言的交换,这里形参不改变实参

void test1(int a,int b)//a,b不改变,因为a,b的生命周期只在swap函数内,结束swap后a,b就消失,不改变实参{int tmp = a;a = b;b = tmp;}int main(){int a = 1;int b = 2;test1(a, b);cout << a << " " << b << endl;}

然后我们学习了指针后,知道能直接交换地址

void test2(int* a, int *b)//使用指针,交换地址实现数字变换{int tmp = *a;*a = *b;*b = tmp;}int main(){int a = 1;int b = 2;test2(&a,&b);cout << a << " " << b << endl;}

然后这是引用,引用是实参的外号,我们这里修改,是对实参的直接修改

void test3(int& a, int& b)//使用引用,a,b是实参的别名,相当于对实参的调用{int tmp = a;a = b;b = tmp;}int main(){int a = 1;int b = 2;test3(a, b);cout << a << " " << b << endl;}

注意:我们这里的引用都必须是合法的空间

Int &a = 10;//10并不是一个空间,只是一个数,这是错误的引用

关于局部变量的引用

int& test2(){int b = 10;return b;}void test1(){int &a = test2();cout <<  a << endl;}int main(){test1();}

按照常理,这里test2中的b出了test2应该作为局部变量被回收,但是

C++引用的定义与使用实例分析

我们依然能得到正确答案,这是因为编译器有对这种情况进行优化,但是仅限一次

如果我们这样

int& test2(){int b = 10;return b;}void test1(){int& a = test2();cout << a << endl;cout << a << endl;cout << a << endl;cout << a << endl;}int main(){test1();}

多调用几次打印

C++引用的定义与使用实例分析

就会发现除了第一次是正常的,其余都是乱码。

注:如果实在是要这样搞,就加上静态变量Static。

int& test2(){static int b = 10;return b;}void test1(){int& a = test2();cout << a << endl;cout << a << endl;cout << a << endl;cout << a << endl;}int main(){test1();}

C++引用的定义与使用实例分析

关于“C++引用的定义与使用实例分析”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“C++引用的定义与使用实例分析”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注编程网行业资讯频道。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯