一.引用的基本用法
引用类型:其本质上是指针,在学习时可以和指针相对照。
指针类型:
int*
double*
Object*
引用类型
int&
double&
Object&
指针的使用:
int a = 123;
int* p = &a;
*p = 999;
引用的使用:
int a = 123;
int& r = a;
r = 999;//对r的操作就是对a的操作,引用可以看成目标对象的一个别名
int a = 123;
int& r = a;
r = 999;
printf("%p\n",&r);//打印地址
注意:
(1)引用在创建时必须初始化
(2) 引用在定义时就与目标绑定,无法解绑
例如:
int a = 123;
int b = 456;
int& r = a;
r = b;
结果是a=b=r456
二.引用的其他用法
(1)引用作为函数的参数
(2)引用作为函数的返回值
(1)
void test(int& a)
{
a = 999;
}
int main()
{
int num = 123;
test(num);
printf("%d\n",num);
return 0;
}
(2)
int num = 1;
int& test()
{
int&a = num;
return a;
//简写
//return num;
}
int main()
{
int& r = test();
r = 123;
return 0;
}
引用可以作为左值使用
struct Object{
int id;
char name[16];
};
Object one;//全局变量
Object& test()//返回全局变量的引用
{
return one;
}
int main()
{
test().id = 10;//函数的返回值是个引用,可以作为左值使用
return 0;
}
要检查引用对象是否有效
int& test()
{
int target = 123;
return target;
}
引用的是一个局部变量,那么在函数退出后,目标对象失效,所以引用也就不能再用了