<五>掌握左值引用和初识右值引用

1:C++的引用,引用和指针的区别?1:从汇编指令角度上看,引用和指针没有区别,引用也是通过地址指针的方式访问指向的内存int &b=a ; 是需要将a的内存地址取出并存下来,b=20;(通过引用修改值时,也是先取出指向的地址,然后访问该地址的值并修改它,和通过指针修改值一样)在定义引用的时候,必须初始化,并能够对a取地址 。所以 int &c=20 编译错误的,因为20取不了地址.2:引用只有一级引用没有多级引用,指针有一级指针和多级指针3:定义一个引用变量和定义一个指针变量,其汇编指令是一样的.通过引用变量修改所引用内存的值和通过指针修改所指向内存的值其底层指令也是一样的.4:int array[5]={};int *p=array;cout<<sizeof(array)<<endl; //20cout<<sizeof(p)<<endl;//4
2:怎么定义一个引用变量第1步:先对要引用的变量 取地址即&, &a ,然后定义一个指针来接, 所以就变成了 int *p=&a;第2步: 用&符号取代 * ,所以变成了 int &p=a;
那么又怎么定义一个引用变量来引用一个数组呢?第1步: 对数组名取地址&array,对数组取地址要怎么接能? int (*p)[5]=&array;第2步:用& 取代 * ,  所以就变成了int (&p)[5]=array;如果打印 sizeof(p)  , 值也是20,就是数组的大小.
3:引用有什么好处?void swap(int a, int b){intc=a;a=b;b=c;}上面的代码是实现不了值交换的,需改为如下方式void swap(int *a ,int

    推荐阅读