指標和引用都是位址的概念;指標指向一塊記憶體,它的內容是所指記憶體的位址;而引用則是指向某塊記憶體的別名。
不同點:
1、引用訪問乙個變數是直接訪問的,二指標是間接訪問。
2、指標是乙個實體有自己的記憶體,而引用僅是個別名,本身不單獨分配自己的記憶體空間
3、指標可以為空;引用不能為空,引用在開始時就繫結了乙個記憶體空間,在定義時必須初始化,所以它只能是這個記憶體空間的名字,之後不可變,記憶體空間的值是可變的;
例如:int i=3,j=4;
int &x=i;//稱為i的別名
x=j;//x仍然引用i,只是修改了x與i共享的記憶體空間的值
4、引用沒有const,指標有const,const的指標不可變
5、「sizeof引用」得到的是所指向的變數(物件)的大小, 而「sizeof指標」得到 的是指標本身的大小;
6、指標和引用的自增(++)運算意義不一樣;
例如:int a=;
int *pa=a;
int pb=&a;
pa++表示指標向後移動乙個int長度,指向下乙個記憶體位址即pa[0]->pa[1]
pb++表示的是pb[0]的值++即將pb[0]=1—>pb[0]=2;
7、引用的健壯性遠大於指標;引用是型別安全的,而指標不是,引用比指標多了型別檢查
8、在結構體中,不能引用自身的乙個聯名,但可以指標指向自己;
typedef struct btnode
;
引用與指標的區別
1.初始化要求不同。引用在建立的同時必須初始化,而指標在定義的時候不必初始化,可以在定義後面的任何地方重新賦值 2.可修改性不同。引用一旦被初始化,就不能被另乙個物件引用了,而指標在任何時候都可以指向另乙個物件 3.不存在null引用。引用不能使用指向空值的引用,必須指向某物件 而指標可以是null...
指標與引用的區別
指標與引用看上去完全不同 指標用操作符 和 引用使用操作符 但是它們似乎有相同的功能。指標與引用都是讓你間接引用其他物件。你如何決定在什麼時候使用指標,在什麼時候使用引用呢?首先,要認識到在任何情況下都不能使用指向空值的引用。乙個引用必須總是指向某些物件。因此如果你使用乙個變數並讓它指向乙個物件,但...
指標與引用的區別
指標與引用看上去完全不同 指標用操作符 和 引用使用操作符 但是它們似乎有相同的功能。指標與引用都是讓你間接引用其他物件。你如何決定在什麼時候使用指標,在什麼時候使用引用呢?首先,要認識到在任何情況下都不能用指向空值的引用。乙個引用必須總是指向某些物件。因此如果你使用乙個變數並讓它指向乙個物件,但是...