引用做函數(shù)參數(shù)
作用:做函數(shù)參數(shù)時(shí),可以利用引用讓形式參數(shù)修飾實(shí)參
優(yōu)點(diǎn):可以簡化指針修改實(shí)參
代碼示例:
//值傳遞傳遞
void swap01(int a, int b)
{
int temp;
temp = a;
a = b;
b = temp;
}
//地址傳遞
void swap02(int* a, int* b)
{
int temp = *a;
*a = *b;
*b = temp;
}
//引用做函數(shù)參數(shù);
void swap03(int &a,int &b)
{
int temp;
temp = a;
a = b;
b = temp;
}
int main()
{
int a = 10;
int b = 20;
int& c = a;
//swap01(a,b); 值傳遞,形參不會修飾實(shí)參
//swap02(&a, &b); 地址傳遞,形參可以修飾實(shí)參
swap03(a, b);//引用做函數(shù)參數(shù),形參會修飾實(shí)參
cout << "swap02 a= " << a << endl;
cout << "swap02 b= " << b << endl;
system("pause");
}
引用做函數(shù)返回值
注意:不要返回局部變量引用
用法:函數(shù)調(diào)用作為左值
代碼示例:
//不能返回局部變量 局部變量由系統(tǒng)管理釋放
//引用做函數(shù)返回值,函數(shù)調(diào)用作左值
int& test01()
{
int a = 10; //局部變量存放在棧區(qū)
return a;
}
int& test02()
{
static int a = 10; //static 靜態(tài)變量存放在四區(qū)中的 全局區(qū)
return a;
}
int main()
{
//int &a = test01();
//cout << "a= " << a << endl;//第一次輸出 系統(tǒng)做保留
//cout << "a= " << a << endl;//第二次輸出錯(cuò)誤 因?yàn)橄到y(tǒng)將內(nèi)存釋放
int& ref = test02();
cout << "test02 ref=" << ref << endl; //ref = 10
cout << "test02 ref=" << ref << endl;
test02() = 100;
cout << "test02 ref=" << ref << endl; //ref = 100
cout << "test02 ref=" << ref << endl;
system("pause");
return 0;
}
引用的注意事項(xiàng)
- 引用必須初始化 (不能取無效地址)
- 引用在初始化后,不可以改變。(一個(gè)別名不可以在作為其他的別名)
總結(jié)參考自??https://www.bilibili.com/video/BV1et411b73Z?p=90??
本文摘自 :https://blog.51cto.com/u