个人学习C++笔记3

102 阅读2分钟

C++核心编程

2. 引用

引用的基本作用

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

引用注意事项

image.png

引用做函数参数

image.png

using namespace std;
//值传递
void swip01(int a, int b)
{
	int temp = a;
	a = b;
	b = temp;
	cout << "swip01a等于" << a<<endl;
	cout << "swip01b等于" << b << endl;
}
//地址传递
void swip02(int *a, int *b)
{
	int temp;
	temp= *a;
	*a =*b;
	*b = temp;
	cout << "swip02a等于" <<*a <<endl;
	cout << "swip02b等于" << *b<<endl;
}
//引用传递
void swip03(int& a, int& b)
{
	int temp = a;
	a = b;
	b = temp;
	cout << "swip03a等于" << a << endl;
	cout << "swip03b等于" << b<< endl;
}
int main()
{
	int a = 20, b = 10;
	swip01(a, b);
	cout << a << endl << b << endl;
	swip02(&a,&b);
	cout << a << endl << b << endl;
	swip03(a, b);
	cout << a << endl << b << endl;
	return 0;
}
C++

image.png 通过以上代码可以看出,形参修饰实参用引用可以简化代码

引用做函数返回值

image.png 加上&符就表示引用的方式返回

image.png 存放在栈区的数据系统运行完会自动清除

image.png 加上static开辟堆区数据,堆区由程序猿开辟程序猿手动释放。

image.png 还可以进行赋值操作

image.png 前两次输出等于10,后两次输出1000

引用的本质

引用的本质在C++内部的实现是指针常量,可以修改值的大小,不可以修改指针的指向性,这也说明了为什么引用一旦初始化就不可以更改。 在平时使用中引用就是别名,所有的指针操作由编译器操作。

常量引用

image.png 上面是正常的引用,引用一个变量。

image.png 但是直接引用一个常量就会报错,因为引用本身需要一个合法的内存空间。

image.png 在加上const后不再报错,编译器优化了代码
int temp=10;
const int &ref=temp;

加入const后变量将不可以修改。
函数中利用常量引用来防止误操作修改实参。