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

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

    推薦閱讀