指標和引用的比較

2022-03-22 06:17:52 字數 1097 閱讀 9248

雖然使用引用(reference)和指標都可間接訪問另乙個值,但它們之間有兩個重要區別。第乙個區別在於引用總是指向某個物件:定義引用時沒有初始化

是錯誤的。第二個重要區別則是賦值行為的差異:給引用賦值修改的是該引用所關聯的物件的值,而並不是使引用與另乙個物件關聯。引用一經初始化,就始終

指向同乙個特定物件(這就是為什麼引用必須在定義時初始化的原因)。

考慮以下兩個程式段。第乙個程式段將乙個指標賦給另一指標:

int ival = 1024, ival2 = 2048;

int *pi = &ival, *pi2 = &ival2;

pi = pi2; // pi now points to ival2

賦值結束後,pi 所指向的 ival 物件值保持不變,賦值操作修改了 pi 指標的值,使其指向另乙個不同的物件。現在考慮另一段相似的程式,使用兩個引

用賦值:

int &ri = ival, &ri2 = ival2;

ri = ri2; // assigns ival2 to ival

這個賦值操作修改了 ri 引用的值 ival 物件,而並非引用本身。賦值後,這兩個引用還是分別指向原來關聯的物件,此時這兩個物件的值相等。

**示例:

1 #include2

3using

namespace

std;45

intmain()

6

結果:--------------------------

pi=0x22fe2c,pi2=0x22fe28

(1) ival=1024,ival2=2048

(2) ival=1024,ival2=2048

pi=0x22fe28,pi2=0x22fe28

--------------------------

ri=1024,ri2=2048

(3) ival=1024,ival2=2048

(4) ival=2048,ival2=2048

ri=2048,ri2=2048

--------------------------

(文字摘自《c++ primer 第四版》 p171)

指標和引用的比較

總述 使用引用 reference 和指標 pointer 都可間接訪問另乙個值,但它們之間存在兩個重要區別 1 引用總是指向某個確定物件 事實上,引用就是該物件的別名 外號 定義引用時沒有進行初始化會出現編譯錯誤 2 賦值行為上存在差異 給引用賦值修改的是該引用所關聯癿物件的值,而不是使該引用與另...

引用和指標的比較

引用和指標的比較 引用是c 中的概念,初學者容易把二者混淆。例1 int m int n m 在這裡,n相當於是m的別名,對n的任何操作就是對m的操作。n既不是m的拷貝,也不是指向m的指標,其實n就是m它自己。例2 int i 0 int j 5 int k i k j 示例程式中,k被初始化為i的...

引用與指標的比較

引用在建立的同時必須初始化,即引用到乙個有效的物件 而指標在定義的時候不必初始化,可以在定義後面的任何地方重新賦值 不存在 引用,引用必須與合法的儲存單元關聯 而指標則可以是null.引用一旦被初始化為指向乙個物件,它就不能被改變不另乙個物件的引用 而指標在任何時候都可以改變為指向另乙個物件 給引用...