一、引用
普通引用
//普通引用
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;
}