(C++)引用的用法总结

引用(reference)是C++极为重要的一部分,本文对其用法进行简单总结。

1. 引用的基本用法

   引用的关键字为&,表示取地址的意思,引用变量定义如下:

int m = 1;
int &n = m;  //定义
cout<<"n=:"<

 从结果可以看出来,变量n和m地址是一样的,而且修改n,m也会改变,这与指针有这异曲同工之妙。可以理解把引用为数据的另一个称呼。
  引用要在定义的时候就赋值,并且不能再去引用别的变量,这一点和常指针类似(指向不变的指针)。引用变量在使用的时候直接使用变量名即可,不用带&,带上&表示取地址。

2. 引用作为形参

  将引用变量作为函数的形参,与指针作为形参类似,可以在函数内部对输入参数进行修改。
 

#include 
using namespace std;

void swap(int &m, int &n) {
    int temp = m;
    m = n;
    n = temp;
}
int main(){
    int a = 1, b = 100;
    cout<<"before: a="<void swap(int &m, int &n) {
    int temp = m;
    m = n;
    n = temp;
}
int main(){
    int a = 1, b = 2;
    int &a1 = a;      //合法
    int &a2 = a + 1;  //非法
    int &a3 = a + b;  //非法
    swap(a+1,a);      //非法
}

从上边代码可以看到,不能引用临时变量,临时变量一般是表达式形式的,一般会储存在寄存器上且无法修改,寄存器是无法寻址的,所以也无法引用(指针也一样),同样,临时变量也不能作为实参传给引用形参。
  这种限制,会使引用在使用的时候很不方便,但是借助const关键字,可以解决这一问题。在引用变量前边添加const关键字,就是告诉编译器,我不会去修改你的临时变量,编译器就会为临时变量分配内存,于是引用就可以用了(指针不行)。

void swap(const int &m, const int &n) {
    
}
int main(){
    int a = 1, b = 2;
    int &a1 = a;
    const int &a2 = a + 1;
    const int &a3 = a + b;
    swap(a+1,a);
}

添加const后,这些代码就不会报错了。

你可能感兴趣的:(C++,c++,java,jvm)