C++引用的学习

引用系列

本质:在C++内部是一个指针常量

1.语法 数据类型 &别名 = 本名

提要点:
1.引用必须初始化
2.引用在初始化后,不可改变值

#include<iostream> using namespace std; //用引用代替指针 void swap1(int a,int b) { int tmp = a; a = b; b = tmp; cout<<a<<" "<<b<<"\n";//仅在函数体内部交换 } int main() { //引用基本语法:实例 // int a = 10; // int &b = a; // b = 20; // cout<<a<<"\n"; // int a = 10; // int &b = a; // int &c = a;//报错!引用 变量 "c" 需要初始值设定项 // int d = 20; // b = d;//赋值操作,而不是更改引用 // cout<<b<<c<<"\n"; int a = 10,b = 20; swap1(a,b); cout<<a<<" "<<b<<"\n";//值传递其实没有实质上的交换,只是拷贝了一份,在内部函数进行交换 return 0; }


2.引用传参

注意:形参会影响实参
地址传递

//地址传递 #include<iostream> using namespace std; void swap1(int *a,int *b) { int tmp = *a; *a = *b; *b = tmp; } int main() { int a = 10; int b = 20; swap1(&a,&b); cout<<a<<" "<<b<<"\n"; return 0; }

引用传递

#include<iostream> using namespace std; void swap1(int &ar,int &br) { int tmp = ar; ar = br; br = tmp; } int main() { int a = 10,b = 20; swap1(a,b); cout<<a<<" "<<b<<"\n"; return 0; }


3.引用做函数返回值

提要点:
1.不要返回局部变量的引用
2.函数调用作为左值(也就是函数调用可以被赋值)

#include<iostream> using namespace std; //不要返回局部变量 //原因如下 // int &test() // { // int b = 10; // return b; // //这里是返回局部变量,属于栈区,程序执行完后直接丢掉 // //我这里显示直接报错了 // } //接下来是函数可以作为左值的实例 int &test1() { static int a = 10;//把它化为静态变量,属于全局区,不会因为程序的结束而自动释放变量 return a; } int main() { // int &h = test(); // cout<<h<<"\n"; int &h = test1(); cout<<h<<"\n"; return 0; }


4.常量引用

提要点:主要是为了防止误修改的值影响原本应该要操作的值

#include<iostream> using namespace std; void Print(const int &a)//改成const常量就不会轻易修改值了 { //a = 500;//如果我任意改一下值,那么形参里的数值也会变 cout<<a<<"\n"; } int main() { //int &tmp = 10;//注意:这里报错了,引用的时候必须是一个合法的内存空间 //const int &tmp = 10; //这里的const 将它修饰成了: /* int a = 10; int &tmp = a; */ int tmp = 10; Print(tmp); return 0; }

__EOF__

本文作者Alaso_shuang
本文链接https://www.cnblogs.com/Alaso687/p/18698092.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   Alaso_shuang  阅读(3)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· .NET10 - 预览版1新功能体验(一)
2 3
4
点击右上角即可分享
微信分享提示