【C++】引用

詩與浪子發表於2020-10-14

引用的基本語法

語法:資料型別 &別名 = 變數名
作用:給變數起別名

#include<iostream>
using namespace std;

int main() {

	//int& a;//定義時就必須初始化,所有此時會報錯
	int a = 10;
	cout << a << endl;

	int& x = a;//給變數a起別名
	x = 100;//改變引用指向內容的值

	cout << a << endl;
	cout << x << endl;

	return 0;
}

引用注意事項

#include<iostream>
using namespace std;

int& func() {
	int a = 10;
	return a;
}


int main() {
	int& x = func();
	cout << x << endl;//輸出:10
	cout << x << endl;//輸出:2047785360 此時的變數內容已經被系統回收
	return 0;
}
  • 不要將區域性變數用引用給函式返回賦值給變數,因為此時返回出來的變數的值在使用一次後就會被系統回收

引用做函式引數

#include<iostream>
using namespace std;
//值傳遞
void swap01(int a, int b) {
	int temp;
	temp = a;
	a = b;
	b = temp;
}
//地址傳遞
void swap02(int* a, int* b) {
	int temp;
	temp = *a;
	*a = *b;
	*b = temp;
}
//引用傳遞
void swap03(int& a, int& b) {
	int temp;
	temp = a;
	a = b;
	b = temp;
}

int main() {

	int a = 10;
	int b = 20;
	
	swap01(a, b);
	cout << "a=" << a << " b=" <<b<< endl;
	
	swap02(&a, &b);
	cout << "a=" << a << " b=" <<b<< endl;

	swap03(a, b);
	cout << "a=" << a << " b=" <<b<< endl;

	return 0;

}

引用做函式的返回值

#include<iostream>
using namespace std;

int& func() {
	int a = 10;
	return a;
}

int main() {

	int& ref = func();
	cout << ref << endl;
	//函式左值
	func() = 1000;
	cout << ref << endl;
	return 0;
}

引用的本質

#include<iostream>
using namespace std;
void func(int& x) {
	x = 100;
}

int main() {
	int a = 10;
	int& ref = a;//自動轉換為 int* const ref = &a; 指標常量的指向不可變,也就解釋了為什麼引用的指向也不可變
	ref = 20;//自動轉換為 *ref = 20;
	cout << "a=" << a << " ref=" << ref << endl;
	
	func(a);
	cout << "a=" << a << " ref=" << ref << endl;
	return 0;
}

相關文章