目錄
1 引用的基本使用
引用:給變量起別名;
語法:數據類型 &別名=原名;
int a = 10;
int &b=a;
2 引用注意事項
1.引用必須要初始化,int &b ;//錯誤;
2 .引用一旦初始化之後,就不可以更改;
3 引用做函數參數
作用:函數傳參數時,可以利用引用的技術讓形參修飾實參;
優點:可以簡化指針修改實參;
void mySwap01(int a, int b)
{
int temp = a;
a = b;
b = temp;
}
//地址傳遞
void mySwap02(int *a, int *b)
{
int temp = *a;
*a = *b;
*b = temp;
}
//引用傳遞
void mySwap03(int &a, int &b)
{
int temp = a;
a = b;
b = temp;
}
int main()
{
int a = 10;
int b = 20;
//mySwap01(a, b);
//mySwap02(&a, &b);
mySwap03(a, b);//引用傳遞,形參會修飾實參
cout << "a=" << a << endl;
cout << "b=" << b << endl;
system("pause");
return 0;
}
總結:通過引用參數產生的效果同使用地址傳遞具有相同的效果;
4 引用做函數返回值
4.1 不要返回局部變量的引用
4.2 函數的調用可以作爲左值
//引用做函數的返回值
//1 不要返回局部變量的引用
int &test01()
{
int a = 10;
return a;
}
//函數的調用可以作爲左值
int &test02()
{
static int a = 10;//靜態變量,存放在全局變量,全局變量的數據在程序運行後系統釋放
return a;
}
int main()
{
int& ref = test02();
cout << "ref=" << ref << endl;
test02() = 100;//如果函數的返回值是引用,這個函數可以作爲左值;
cout << "ref=" << ref << endl;
//cout << "b=" << b << endl;
system("pause");
return 0;
}
2.5 引用的本質
本質是在C++內部實現一個指針常量;
指針常量是指指針是常量,是一個指向不可以修改,值可以修改的指針; int* const cp_a=&a;
常量指針指常量的指針,是一個值不可以修改,指向可以修改的指針;const int * a_cp=&a;
結論:C++推薦使用引用技術,因爲語法方便,引用本質是指針常量,但所有的操作,指針編譯器幫我們做了;
2.6 常量引用
作用:常量引用主要用來修飾形參,防止誤操作;
在函數形參中,通過在參數前添加const,確保參數不會被改變;
void showValue(const int& a)
{
//a = 1000;
cout << " a = " << a << endl;
}
int main()
{
//cout << "ref=" << ref << endl;
//test02() = 100;//如果函數的返回值是引用,這個函數可以作爲左值;
//cout << "ref=" << ref << endl;
//cout << "b=" << b << endl;
//加上const之後,編譯器將代碼修改爲int temp=10; const int &ref = temp;
//const int& ref = 10;//引用必須引用一塊合法的內存
//ref = 20; //加入const之後變爲只讀,不可以修改
int a = 100;
showValue(a);
system("pause");
return 0;
}