2 參考
2.1 參考的基本使用
作用:給變數起別名
語法:資料型別 &別名 = 原名
示例:
#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;
system("pause");
return 0;
}
2.2 參考注意事項
- 參考必須初始化
- 參考在初始化后,就不可以改變
示例:
#include<iostream>
using namespace std;
int main()
{
int a = 10;
int& b = a;
//1、參考必須初始化
//int& b;//錯誤,必須要初始化
//2、參考在初始化后,不可以改變
int c = 20;
c = b;//這是賦值操作,不可以更改參考
cout << "a = " << a << endl;
cout << "b = " << b << endl;
cout << "c = " << c << endl;
system("pause");
return 0;
}
2.3 參考做函式引數
作用:函式傳參時,可以利用參考的技術讓形參修飾實參
優點:可以簡化指標修飾實參
示例:
#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;
*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);//值傳遞,形參不會修飾實參
//mySwap02(&a, &b);//地址傳遞,形參會修飾實參
mySwap03(a, b);//參考傳遞,他的形參也會修飾實參的
cout << "a =" << a << endl;
cout << "b = " << b << endl;
system("pause");
return 0;
}
總結:通過參考引數產生的效果同按地址傳遞是一樣的,參考的語法更清楚簡單
2.4 參考做函式回傳值
作用:參考是可以作為函式的回傳值存在的
注意:不要回傳區域變數參考
用法:函式呼叫作為左值
示例:
#include<iostream>
using namespace std;
//參考做函式的回傳值
//1、不要回傳區域變數的參考
int& test01()
{
int a = 10;//區域變數存放在四區中的堆疊區
return a;
}
//2、函式的呼叫可以作為左值
int& test02()
{
static int a = 10;//靜態變數,存放在全域區,全域區的資料是在程式結束后由系統釋放
return a;
}
int main()
{
//int& ref1 = test01();
//cout << "ref1 = " << ref1 << endl;//第一次結果正確,是因為編譯器做了保留,也許也錯的
//cout << "ref1 = " << ref1 << endl;//第二次結果錯誤,是因為a的記憶體已經釋放
int& ref2 = test02();
cout << "ref2 = " << ref2 << endl;
cout << "ref2 = " << ref2 << endl;
test02() = 1000;
cout << "ref2 = " << ref2 << endl;
cout << "ref2 = " << ref2 << endl;
system("pause");
return 0;
}
2.5 參考的本質
本質:參考的本質在c++中內部的實作是一個指標常量
示例:
#include<iostream>
using namespace std;
void func(int& ref) {
ref = 100;//ref 是參考,
}
int main()
{
int a = 10;
//自動轉換為 int* const ref = &a;指標常量是指標指向不可改,也說明為什么參考不可更改
int& ref = a;
ref = 20;//內部發現ref是參考,自動幫我們轉換為:*ref =20;
cout << "a:" << a << endl;
cout << "ref:" << ref << endl;
system("pause");
return 0;
}
2.6 常量參考
作用:常量參考主要用來修飾形參,防止誤操作
在函式形參串列中,可以加const修飾形參,防止形參改變實參
示例:
#include<iostream>
using namespace std;
//列印資料函式
void showValue(const int& val)
{
//val = 1000;//無法修改
cout << "val = " << val << endl;
}
int main()
{
////常量應用
////使用場景:用來修飾形參,防止誤操作
//int a = 10;
//int& ref = a;//參考必須引一塊合法的記憶體空間
////加上const之后,編譯器將代碼修改,int temp = 10;const int & ref =temp;
//const int& ref = 10;
////ref = 20;//不可以修改,加入const之后變為只讀,不可以修改
int a = 100;
showValue(a);
system("pause");
return 0;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/498525.html
標籤:C++
上一篇:string的底層實作
