《C/C++学习指南》语法篇—笔记 (十二、引用)
C++特有的。
引用 (a reference of target):本质上是指针,
指针类型: ---------- 引用类型:
int* int&
double* double&
Object* Object&
指针定义
int a = 123;
int* p = &a; //【p指向了变量a】
*p = 999;
引用定义:
int a = 123;
int& r = a; //引用的定义, 【r是变量a的引用】
r = 999; //对r的操作,就是对a的操作
printf("%p",&r); //打印的是目标对象a的地址
引用可以看作是目标对象的一个别名,对引用的操作其实都是对目标对象的操作。
注意事项:
- 引用在定义的适合必须初始化,一创建就要与目标对象绑定。
- 引用在定义时就与目标对象绑定,无法解绑。
引用的用法 (作为函数的参数、作为函数的返回值):
作为函数的参数:
void test(int& a) // int& a = number;
{
a = 999;
}
int main()
{
int number = 0;
test(number); //number变成了999
return;
}
传引用 和 传地址 本质相同。
作为函数的返回值:
int number = 0; //全局变量
int& test()
{
//int& a = number;
//return a; //返回引用
return number; //和上面两句话一样
}
int main()
{
int& r = test(); //r = numner = 0
r = 123; //修改目标对象的值 r = number = 123
return 0;
}
返回值作为左值(引用类型的返回值),可读性不好
test() = 123; //number = 123 可读性不好
引用安全问题:
检查引用的目标对象是否有效。