引用
引用的概念
- 下面的写法定义了一个引用,并将其初始化为引用某个变量
类型名 & 引用名 = 某变量名
int n = 4;
int & r = n; //r引用了n,r的类型是int &
- 某个变量的引用,等价于这个变量,相当于该变量的一个别名
- 定义引用时一定要将其初始化成引用某个变量
- 初始化后,他就一直引用该变量,不会再引用别的变量了
- 引用只能引用变量,不能引用常量和表达式
引用的应用
C语言中,如何编写交换两个整形变量值的函数?
void swap(int a, int b)
{
int tmp;
tmp = a; a = b; b = tmp;
}
int n1,n2;
swap(n1,n2); //n1n2的值不会被交换,形参的改变无法影响实参
void swap(int *a,int *b)
{
int tmp;
tmp = *a; *a = *b; *b = tmp;
}
int n1,n2;
swap(&n1,&n2); //n1n2的值被交换,但是多了很多符号,比较麻烦
void swap(int &a, int &b)
{
int tmp;
tmp = a; a = b; b = tmp;
}
int n1,n2;
swap(n1,n2); //n1n2的值被交换,由于a和b是n1和n2的引用,因而可以直接修改
引用作为函数的返回值
int n = 4;
int & SetValue() {return n;}
int main()
{
SetValue() = 40; //函数的返回值是引用,就可以把函数写在等号左边,可以直接赋值
cout<<n;//输出:40
return 0;
}
常引用
- 定义引用时,前面加const关键字,即为“常引用”
int n;
const int & r = n;
//r的类型是const int &
特点:不能通过常引用去修改其引用的内容
常引用和非常引用的转换
- const T & 和 T &是不同的类型(T为int,char等类型)
- T & 类型的引用或T类型的变量可以用来初始化const T & 类型的引用
- const T 类型的常变量和const T & 类型的引用则不能用来初始化 T & 类型的引用,除非进行强制类型转换
网友评论