6.2常引用

一、引用

普通引用

       //普通引用

	int a = 10;
	int &b = a;
	printf("b:%d\n",b);

常引用

	//常引用
	int x = 20;
	const int &y = x;//常引用  作用是:让变量  引用只读属性
	//y = 21;//报错
常引用的初始化分为两种

//常引用的初始化  分为2种
	//(1):用变量初始化 常引用
	{
		int x1 = 30;
		const int &y1 = x1;//用x1的变量初始化  常引用
	}
	//(2):用字面初始化 常量引用
	{
		const int a = 40;//c++编译器把a放到符号表中了
		//int &m = 41;//错误----普通引用 引用一个字面量  请问字面量有没有内存地址没有内存
		//引用就是给内存取多个门牌号,(多个别名) 而41没有内存无法取别名,加个const就可以编译通过
		const int &m = 42;//正确的使用方式---c++编译器  会 分配内存空间
          //当const int &a = 10; const修饰引用时,也会分配存储空间
	}
常引用的知识架构

#include<iostream>
using namespace std;

int main()
{
	//普通引用

	int a = 10;
	int &b = a;
	printf("b:%d\n",b);
	
	//常引用
	int x = 20;
	const int &y = x;//常引用  作用是:让变量  引用只读属性
	//y = 21;//报错

	//常引用的初始化  分为2种
	//(1):用变量初始化 常引用
	{
		int x1 = 30;
		const int &y1 = x1;//用x1的变量初始化  常引用
	}
	//(2):用字面初始化 常量引用
	{
		const int a = 40;//c++编译器把a放到符号表中了
		//int &m = 41;//错误----普通引用 引用一个字面量  请问字面量有没有内存地址没有内存
		//引用就是给内存取多个门牌号,(多个别名) 而41没有内存无法取别名,加个const就可以编译通过
		const int &m = 42;//正确的使用方式---c++编译器  会 分配内存空间
                //当const int &a = 10; const修饰引用时,也会分配存储空间
	}
	system("pause");
	return 0;
}
综合案例

#include<iostream>
using namespace std;




struct Teacher
{
	char name[64];
	int age;
};
////常量引用
int  printfTeacher( const Teacher &myt)//int  printfTeacher( const Teacher * const myt)
{
	//常量引用  让 实参变量 有只读属性
	//myt.age = 34;如果在这里进行改变数值,会报错
	printf("my.age:%d\n",myt.age);
	return 0;
}

int main()
{

	Teacher t1;
	t1.age = 36;
	printfTeacher(t1);
	system("pause");
	return 0;
}



发布了33 篇原创文章 · 获赞 2 · 访问量 8540

猜你喜欢

转载自blog.csdn.net/QQ960054653/article/details/54773505