1.引用相當於乙個變數的別名,指標指向記憶體,存放的是變數的位址
2.引用在定義之後必須被初始化,指標不需要初始化
錯誤案例:int p0; int &p1; p1=p0;
3.引用在初始化之後的值不可以改變,指標可以改變
這點從編譯角度來分析的話, 程式在編譯時分別將指標和引用新增到符號表中,符號表存的是變數和變數的位址,且符號表生成之後不會再改,指標變數的位址值是指標物件的位址(可以修改),而引用在符號表上對應的位址值為引用物件的位址值,所以引用物件不可更改
4.sizeof (引用)返回引用所指變數的大小,sizeof(指標)返回指標的大小。
5.通知引用和指標還經常作為函式引數來傳遞的,通過引用傳遞的引數修改後,呼叫該函式的實參也發生了改變,指標形參改變後實參雖然也會改變,但是和引用不同的是,指標的形參構造的時候會申請記憶體,引用形參不申請記憶體。
兩整數變數值交換的c程式如下:
void swapint(int *a,int *b)
指標a和指標b發生變化後,傳遞到該函式中的實參發生變化
使用引用機制後,以上程式的c++版本為:
void swapint(int &a,int &b)
引用a,b發生變化後,傳遞到該函式中的實參發生了變化
6.當大型物件傳遞給形參時,使用引用可以提公升效率,因為引用只是乙個記憶體的別名,沒有發生物件的複製
指標引用和引用指標的區別
c 在傳參的過程中,指標 和指標引用 是有區別的。雖然,我們往往可以通過傳指標然後通過間址訪問來修改指標所指向物件的值,同樣,通過引用也可以直接修改物件的值。但是,當傳指標的時候有乙個問題,就是,我們雖然可以通過指標來修改指標所指向物件的值,但是我們沒有不能直接修改指標的內容 也就是指標變數存放的位...
傳指標和傳指標引用的區別 指標和引用的區別(本質)
指標傳遞引數本質上是值傳遞的方式,它所傳遞的是乙個位址值。值傳遞過程中,被調函式的形式引數作為被調函式的區域性變數處理,即在棧中開闢了記憶體空間以存放由主調函式放進來的實參的值,從而成為了實參的乙個副本。值傳遞的特點是被調函式對形式引數的任何操作都是作為區域性變數進行,不會影響主調函式的實參變數的值...
傳指標和傳指標引用的區別 指標和引用的區別(本質)
指標傳遞引數本質上是值傳遞的方式,它所傳遞的是乙個位址值。值傳遞過程中,被調函式的形式引數作為被調函式的區域性變數處理,即在棧中開闢了記憶體空間以存放由主調函式放進來的實參的值,從而成為了實參的乙個副本。值傳遞的特點是被調函式對形式引數的任何操作都是作為區域性變數進行,不會影響主調函式的實參變數的值...