引用变量&和指针*的区别
&在C/C++中做右值时,为取地址运算符,来指示变量的地址。C++给&符号赋予了另外一个含义,将其用来声明引用。
引用变量的作用:
1、别名
int b = 0;
int& a = b;
2、用作函数参数
和指针作为函数参数一样,可以提高函数的效率,函数参数在按值传递的情况下,会产生一个临时的副本。
//引用: void func(int& x); int a = 0; func(a); //指针: void func(int* x); int a = 0; func(&a); //值传递: int func(int* x); int a = 0; int result = func(a);
void func(int& x){
x = x * x;
}
void func(int* x){
*x = (*x) * (*x);
}
int func(int x){
int result = x * x;
return result;
}
3、用于函数返回值
用引用作函数的返回值的最大的好处是在内存中不产生返回值的副本
StringBad& StringBad::operate=(const StringBad& other);
引用使用的注意事项:
1、必须在声明引用的时候初始化,这与指针不同,指针可以先声明,后赋值,引用的这个属性和const类似。
引用不能为空,不存在空引用,但是指针却可以存在空指针,这就意味着我们拿到一个引用时不需要判断引用是否为空,但是如果拿到的是一个指针,则需要判断指针是否为空之后再进行指针的进一步操作。
2、引用一旦建立,将一直效忠于他,不能再引用。