說起指標和引用的區別之前得先了解指標是什麼?引用又是什麼?
在c/c++中指標是指資料在記憶體單元中的位址。例如有乙個變數char a儲存在』0x1f』中,若另有乙個指標p的值為』0x1f』。那麼p就是指向a的指標。
char a = 'a';
char *p = &a;
下面執行如下**為例:
int main()
執行結果:
a:1
b:0x7ffeefbff49c
&a:0x7ffeefbff49c
b:0x7ffeefbff49c
b:10
引用是給已存在的變數取了乙個別名,編譯器也不會給引用開闢乙個新的空間乙個變數的引用與變數本身用同乙個記憶體空間。
int main()
執行結果:
a:10
c:10
&c:0x7ffeefbff49c
首先從定義上來講,不難看出指標是乙個變數,此變數儲存的是某個位址,而引用只是對原來的變數取了個別名。
指標可以用const修飾符,而引用不可以用const。
可以有多級指標例如指向指標的指標(**p),但不可以有多級引用。
指標可以為空(int* p = null;是合法的),但應用不可以為空,並且引用在宣告時必須初始化。
指標的值在初始化以後是可以改變的,而引用的值被初始化以後就不可以再改變了。
指標與引用
摘自 高質量c 程式設計 指標與引用,在more effective c 的條款一有詳細講述,我給你轉過來 條款一 指標與引用的區別 指標與引用看上去完全不同 指標用操作符 和 引用使用操作符 但是它們似乎有相同的功能。指標與引用都是讓你間接引用其他物件。你如何決定在什麼時候使用指標,在什麼時候使用...
引用與指標
引用就是物件的另乙個名字,在實際的程式中,引用主要用作函式的形式引數。引用是一種復合型別,通過在變數名前新增 符號來定義。復合型別是指用其他型別定義的型別。在引用的情況下,每一種引用型別都 關聯到 某一其他型別。引用必須用與該引用同型別的物件初始化。當引用初始化後,只要該引用存在,它就保持繫結到初始...
指標與引用
include iostream using namespace std void testref int i 10 引用不可以為空,他是乙個物件的別名 int ref i ref cout i 00824f1e mov dword ptr i 1 把i的位址傳入eax 並把eax指標的位址傳給re...