指標與引用區別

2021-09-21 02:16:24 字數 877 閱讀 5406

這裡的第三條要注意,雖然下面的**不報錯而且 b 的值也等於1,但只是看起來像而已,理解有誤!是如果真的是改變引用的指向應該用 &b = c,但是這樣是不被允許的。引用的賦值其實是指引用初始化時,它的引用物件只能是變數,並且,一旦它指定為某乙個物件的引用後,就不能更改了。但是,可以用這個引用來改變它的物件的值,從而達到引用的目的——作為變數物件的別名。因為引用 b 初始化為 a,即b從此以後一直是 a 的引用,若想讓 b 不再是 a 的引用而成為別的變數的引用那是不可能的

int a = 0;

int c = 1;

int& b = a;

b = c;

cout << b << endl;

所以**中的 b = c,其實只表示 b = 1 的意思,也就是說 b 還是 a 的引用,但是 b 的值被賦成了1,a 的值也就是1了,如果在 b = c 的下一行加上 c = 10,就會發現 b 的值依舊是1,因為 b 始終都不是 c 的引用,兩者沒關係。

【另外】常引用所引用的物件的值是不能更改的,即上述**中若將語句「int& b = a;」更改為「const int& b = a;」,在編譯時就會出現錯誤了(注意是不能以 c 的方式來更改,比如 c = 3,但是可以用 a 來改,a = 3 是允許的)。指標同理:

int a = 0 , b = 1;

const int *p1 = &a;

*p1 = 1; //不允許!因為const在*左側表示值不能改

int* const p2 = &a;

p2 = &b; //不允許!因為const在*右側表示指向不能變

引用與指標的區別

1.初始化要求不同。引用在建立的同時必須初始化,而指標在定義的時候不必初始化,可以在定義後面的任何地方重新賦值 2.可修改性不同。引用一旦被初始化,就不能被另乙個物件引用了,而指標在任何時候都可以指向另乙個物件 3.不存在null引用。引用不能使用指向空值的引用,必須指向某物件 而指標可以是null...

指標與引用的區別

指標與引用看上去完全不同 指標用操作符 和 引用使用操作符 但是它們似乎有相同的功能。指標與引用都是讓你間接引用其他物件。你如何決定在什麼時候使用指標,在什麼時候使用引用呢?首先,要認識到在任何情況下都不能使用指向空值的引用。乙個引用必須總是指向某些物件。因此如果你使用乙個變數並讓它指向乙個物件,但...

指標與引用的區別

指標與引用看上去完全不同 指標用操作符 和 引用使用操作符 但是它們似乎有相同的功能。指標與引用都是讓你間接引用其他物件。你如何決定在什麼時候使用指標,在什麼時候使用引用呢?首先,要認識到在任何情況下都不能用指向空值的引用。乙個引用必須總是指向某些物件。因此如果你使用乙個變數並讓它指向乙個物件,但是...