//常引用
#include<iostream>
using namespace std;
//常量引用的只是架构
int main01()
{
//普通引用
int a=10;
int &b=a;
printf("%d,%d",a,b);
//常引用
int x=20;
const int &y=x;//常引用是让 变量拥有只读属性。不能通过y去修改x
//y=21;编译会报错
//常量引用初始化分为两种情况
//(1)用变量初始化常量引用
int x1=30;
const int &y1=x1;//用x1这个变量去初始化常引用
//(2)用字面量去初始化常量引用
const int n=40;//c++编译器吧n放在符号表中了,n现在 是常量
//int &m=41; //普通引用 引用的是字面量 请问字面量有没有内存地址?没有
//41没有内存地址,引用就是给内存 起别名,但是41没内存,所以编译会报错
const int &m=42 ;//加个const编译就可以通过了,C++编译器会偷偷的多分配一个内存空间,
//但是43还是43没有内存空间。但是他会给m分配一个内存空间,让m这个指针指向这个内存空间
cout<<"hello"<<endl;
return 0;
}
struct teacher
{
char name[64];
int age;
};
//C++内部相当于实现的是 void printteacher(const teacher *const myt)
void printteacher(const teacher &myt)
{
//常量引用让实参 拥有只读属性
cout<<myt.age<<endl;
}
#include<iostream>
using namespace std;
int main()
{
teacher t1;
t1.age =36;
printteacher(t1 );
cout<<"hello"<<endl;
return 0;
}
/*const引用结论
(1)const &int e相当于const int *const e
(2)普通引用相当于const * const e
(3)当时用常量(字面量)对const引用进行初始化时,C++编译器会为常量值分配内存空间,
并将引用名作为这段空间的别名。
(4) 使用字面量对const引用初始化后,将生成一个只读变量。