C++ 中指針和引用有什么區(qū)別詳解
1.從內存上來講 系統(tǒng)為指針分寸內存空間,而引用與綁定的對象共享內存空間,系統(tǒng)不為引用變量分配內容空間。
2指針初始化以后可以改變指向的對象,而引用定義的時候必須要初始化,且初始化以后不允許再重新綁定對象。
3.所以引用訪問對象是直接訪問。指針訪問對象是間接訪問。
4。如果pa是指針,那么*pa就是引用了。
但是兩者在作為形參的時候非常相似,區(qū)別是指針拷貝副本,引用不拷貝。程序如下:
#include<stdio.h> void pt(int * pta,int * ptb) { int *ptc; ptc=pta;pta=ptb;ptb=ptc; } void ref(int &ra,int &rb) { int rc; rc=ra;ra=rb;rb=rc; } void main() { int a=3;int b=4; int *pa=&a;int *pb=&b; pt(pa,pb); printf("zhizhen: a=%d,b=%d\n",a,b); ref(a,b); printf("yinyong: a=%d,b=%d\n",a,b); }
輸出結果如下圖:
zhizhen: a=3,b=4 yinyong: a=4;b=3