c++ 引用
2023-12-13 20:13:20
引用的基本语法
引用就是起别名
#include<iostream>
using namespace std;
int main(){
//引用基本语法
//数据类型 &别名 = 原名
int a = 10;
int &b =a;
cout<<"a = "<<a<<endl;
cout<<"b = "<<b<<endl;
b = 100;
cout<<"a = "<<a<<endl;
cout<<"b = "<<b<<endl;
}
注意:1、引用必须初始化
? ? ? ? ? ?2、引用在初始化后,不可以改变
#include<iostream>
using namespace std;
int main(){
int a = 10;
//1、引用必须初始化
//2、引用在初始化后,不可以改变
//int &b;//错误,必须要初始化
int &b = a;
//2、引用在初始化后,不可以改变
int c = 20;
b = c;
cout<<"a = "<<a<<endl;
cout<<"b = "<<b<<endl;
cout<<"c = "<<c<<endl;
return 0;
}
引用做函数参数(使用效果与地址一样但是实现效果更简单)
#include<iostream>
using namespace std;
//交换函数
//1、值传递
void myswap01(int a,int b){
int temp = a;
a = b;
b = temp;
//cout<<"swap01 a = "<<a<<endl;
//cout<<"swap01 b = "<<b<<endl;
}
//2、地址传递
void myswap02(int * a,int * b){
int temp = *a;//注意temp前面不需要*
*a = *b;
*b = temp;
}
//3、引用传递
void myswap03(int &a,int &b){
int temp = a;
a = b;
b = temp;
}
int main(){
int a = 10;
int b = 20;
myswap01(a,b);//值传递,形参不会修饰实参
cout<<"a = "<<a<<endl;
cout<<"b = "<<b<<endl;
myswap02(&a,&b);//地址传递,形参会修饰实参的
cout<<"a = "<<a<<endl;
cout<<"b = "<<b<<endl;
myswap03(a,b);//引用传递,形参会修饰实参的
cout<<"a = "<<a<<endl;
cout<<"b = "<<b<<endl;
return 0;
}
引用做函数返回值
? ? 1、不要返回局部变量的引用
#include<iostream>
using namespace std;
//引用做函数的返回值
//1、不要返回局部变量的引用
int& test01(){
int a = 10;//局部变量存放在四区中的栈区
return a;
}
int main(){
int &ref = test01();
cout<<"ref = "<<ref<<endl;//第一次结果正确,是因为编译器做了保留
cout<<"ref = "<<ref<<endl;//第一次结果错误,因为a的内存已经释放
}
? ?2、函数的调用可以作为左值
#include<iostream>
using namespace std;
//引用做函数的返回值
//2、函数的调用可以作为左值
int& test02(){
static int a = 10;//静态变量,存放在全局区,全局区上的数据在程序结束后系统释放
return a;
}
int main(){
int &ref2 = test02();
cout<<"ref2 = "<<ref2<<endl;
cout<<"ref2 = "<<ref2<<endl;
test02() = 1000;//如果函数的返回值是引用,这个函数调用可以作为左值
cout<<"ref2 = "<<ref2<<endl;
cout<<"ref2 = "<<ref2<<endl;
}
引用的本质是指针常量(会用即可)
int &ref = a;//相当于int * const ref = &a;
常量引用
#include<iostream>
using namespace std;
int main(){
//常量引用
//使用场景:用来修饰形参,防止误操作
//int a = 10;
//加上const之后 编译器将代码修改 int temp = 10;const int &ref = temp;
//不能用int & ref = 10;
const int & ref = 10;//引用必须引一块合法的内存空间
//ref =20;//加入const之后变为只读,不可以修改
cout<<ref<<endl;
return 0;
}
#include<iostream>
using namespace std;
//打印数据函数
void showvalue(const int &val){
//val = 1000;没添加const会导致误操作,加上后值不能再修改
cout<<"val = "<<val<<endl;
}
int main(){
int a = 100;
showvalue(a);
cout<<"a = "<<a<<endl;
return 0;
}
文章来源:https://blog.csdn.net/m0_62615587/article/details/134897052
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!