Skip to content

Latest commit

 

History

History
138 lines (101 loc) · 2.87 KB

10_引用.md

File metadata and controls

138 lines (101 loc) · 2.87 KB

1.基本使用

作用: 给变量起别名 语法: 数据类型 &别名 = 原名

int a = 10;  //含义:在栈上开辟了4字节的内存,内存存放的数据是10
int& b = a;

cout << "a = " << a << '\t' << &a << endl;
cout << "b = " << b << '\t' << &b << endl;

2.注意事项

  • 引用必须初始化
  • 引用在初始化后就不可以改变了
	int a = 10;  //含义:在栈上开辟了4字节的内存,内存存放的数据是10
	//别名
	int& b = a;

	cout << "a = " << a << '\t' << &a << endl;
	cout << "b = " << b << '\t' << &b << endl;

	int c = 20;

	//b = &c;
	b = c; //赋值操作,而不是更改引用

	cout << "a = " << a << '\t' << &a << endl;
	cout << "b = " << b << '\t' << &b << endl;
	cout << "c = " << c << '\t' << &c << endl;

3.引用做函数参数

作用: 函数传参时,可以利用引用的技术让形参修饰实参 优点: 可以简化指针修改实参

//传递引用修饰实参
void swap3(int& pA, int& pB)
{
	int temp = pA;
	pA = pB;
	pB = temp;

	cout << pA << endl;
	cout << pB << endl;
}

4.引用做函数返回值

作用:引用是可以作为函数的返回值存在的

注意:==不要返回局部变量的引用== 用法:函数调用作为左值

int& func()
{
	int a = 10; //局部变量
	return a;
}

int& func2()
{
	static int a = 20;
	return a;
}

5.引用的本质

本质:==引用的本质在C++内部实现是一个指针常量==

//发现是引用,转换为 int* const ref=&a
void func(int& ref) {
	ref = 100; //ref是引用,转换为 *ref = 100
}

int main() {

	//int a = 10;

	//func(a);

	//cout << a << endl;

	int a = 10;

	//自动转换为 int* const ref=&a 指针常量是指针指向不可改,也说明为什么引用不可以更改
	int& ref = a;

	ref = 100; //内部发现 ref 是引用,自动帮我们转换为 * ref=100;

	system("pause");

	return 0;
}

6.常量引用

作用: 常量引用主要用来修饰形参,防止误操作

在函数形参列表中,可以加==const修饰形参==,防止形参改变实参

//发现是引用,转换为 int* const ref=&a
void func(const int& ref) {
	//ref = 1000; //ref是引用,转换为 *ref = 100

	cout << ref << endl;
}

int main() {

	int a = 10;
	//int& ref = 10;  引用必须引一块合法的内存空间
	//const int& ref = 10;  //编译器将代码修改  int temp=10;  int & ref=temp;
	int& ref = a;

	func(10);

	system("pause");

	return 0;
}