【C++ 02】引用的使用說明

目錄

1 引用的基本使用

2 引用注意事項

3 引用做函數參數

4 引用做函數返回值

2.5 引用的本質

2.6 常量引用


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;
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章