(1)引用必須初始化。指標可以為空。
(2)引用初始化後不可改變,就是指向某個變數(記憶體)。指標可以改變,指向不同區域。
(3)引用的大小是物件的大小。指標的大小是本身大小,一般是4位元組。
(4)引用和指標的++自增運算子意義不同。
int a(8), b(9);
int &ar = a;
cout
<< ar << endl; //8
ar = b;
cout
<< ar << endl; //9
cout
<< a << endl; //9
b = 10;
cout
<< ar << endl; //9
開始理解引用不能重新賦值,就寫了上述**驗證。結果發現程式可以執行。後來發現理解錯了。
引用ar初始化為a,表明ar從此以後一直是a的引用,不能成為別的變數的引用。
ar =b
這句**的理解應該是:利用引用ar來改變它所指物件a的值,相當於語句
a =5;
我錯誤理解成:取消ar對a的引用,將其作為b的引用。
因此後面的列印可以發現,ar始終和a保持一致,就好像是a的別名一樣。
而怎麼觸犯這個不允許改變呢?
&ar =b; //error!表示式必須是可修改的左值
指標和引用,const 指標和const 引用
指標和引用是在使用中經常弄混淆的兩個概念。引用 reference 為物件起了另外乙個名字,用符號 表示。name,例如 int i 1024 int ref i 一般在初始化變數時,初始值會被拷貝到新建立的物件中,然而定義引用時,程式把引用和它的初始值繫結 bind 在一起,而不是將初始值拷貝給引...
指標和引用
一 先看一段 include using namespace std void freeptr1 int p1 void freeptr2 int p2 void main 思考 在 freeptr1 和freeptr2 的比較中,你能發現它們的不同點嗎?二 對 進行解釋 include using...
指標和引用
指標與引用看上去完全不同 指標用操作符 和 引用使用操作符 但是它們似乎有相同的功能。指標與引用都是讓你間接引用其他物件。你如何決定在什麼時候使用指標,在什麼時候使用引用呢?首先,要認識到在任何情況下都不能使用指向空值的引用。乙個引用必須總是指向某些物件。因此如果你使用乙個變數並讓它指向乙個物件,但...