【C++】引用的使用场景 以及 指针跟引用的区别

    引用的使用场景 

    (一)给变量起别名

      给变量起别名,顾名思义就像人也有别名一样,不管是别名还是原名都指的是同一个人,同样,下面声明b是a的别名,即a和b的作用相同,都代表同一变量。

int a;       //定义 a 是整型变量
int &b = a;  //声明  b 是 a 的引用

      引用的三大特性:引用在定义时必须初始化、一个变量可以有多个引用、引用一旦引用其他一个实体,再不能引用其他实体。

      注: “ & ”为引用声明符,并不代表地址。

    (二)将引用作为函数的形参

      使用引用类型就不必再swap中声明形参是指针变量,指针变量要另外开辟内存单元,其内容是地址。而引用变量不是一个独立的变量,不单独占内存单元。而且在调用swap函数时,只需要传值即可,将引用作为函数的形参更加简单、直观、方便。

void swap(int &a, int &b)
{
    int temp;                                 //调用swap
    temp = a;                                 //int i = 3, j =5;
    a = b;                                    //swap(i,j);
    b = temp;
}

    (三)将引用作为函数的返回值

      将引用作为函数的返回值,返回值的生命周期必须长于函数的生命周期,且不能反回栈空间上的引用。关于将引用作为函数返回值会存在的一些问题将在下次博客中详谈。

int& Test(int& a)
{
  a += 1;
  return a;
}

    指针跟引用的区别

    相同点:引用类型的变量,在底层被当做指针来处理。
      区别:1、引用在定义时,必须初始化,但是指针没有要求,但建议初始化;

                 2、指针可以指向多个变量,引用类型一旦与变量绑定就不可更改;

                 3、定义一个指针变量 p 时,++p偏移一个元素类型的大小,而 int  a = 10;  int  &ra = a; ++ra则表示                        在a的实体上加1;

                 4、两者遇到sizeof的含义也不一样,指针的大小由平台和类型觉得,引用则取决于引用实体的大小;

                 5、指针需要手动寻址,引用通过编译器自动寻址。

    

猜你喜欢

转载自blog.csdn.net/xiayzn/article/details/80766308
今日推荐