C++学习笔记-引用

引用和指针新手比较容易搞混,引用不是变量它只是一个变量的别名,你对一个变量引用不会得到2个变量。编译器不会为引用创建一个新变量。

1
2
3
4
int a = 5;
int& ref = a; // 创建a的引用ref
ref = 2; // 对引用对象修改就相当于修改被引用对象
std::cout << ref << std::endl;

我们先来看3个函数定义

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
// 接收一个int类型的参数
void Increment1(int value)
{
	value++;
}

// 接收一个指针类型的参数
void Increment2(int* value)
{
	(*value)++; // 使用指针时需要先解引用
}

// 接收一个引用类型的参数
void Increment3(int& value)
{
	value++;	// 使用引用则不需要
}

下面看看这3个函数的区别

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
int main()
{
	int b = 5;
	Increment1(b); // 函数参数传递时,是值拷贝,因此b并没有被++
	std::cout << b << std::endl;

	int c = 5;
	Increment2(&c); // 对c取地址,由于传递的是一个指针,因此c被++了。
	std::cout << c << std::endl;

	int d = 5;
	Increment3(d); // 引用作为参数传递时就好像传递了一个指针
	std::cout << d << std::endl;
}

总结

  1. 引用不是变量,它只是一个变量的别名,你对一个变量引用不会得到2个变量。编译器不会为引用创建一个新变量。
  2. 引用作为参数传递时就好像传递了一个指针
  3. 引用相比指针,使得代码看起来更直接,简单。
  4. 引用能做的指针都能做。
  5. 引用一旦被初始化就不能再引用别的变量。
  6. 引用定义时必须引用一个变量,不能像变量那样先定义后赋值,因为引用不是变量。
updatedupdated2025-03-032025-03-03