指標與引用的故事

2022-03-07 15:58:31 字數 739 閱讀 3837

在學習

c++引用是乙個比較容易混淆的東西,「引用是乙個變數的別名」這貌似是很多教材中對引用的定義,貌似老師還會舉一些什麼張三李四的例子,但是我覺得對於學習

c++的人來說該清楚引用還是有必要的。

我認為引用就是

c++把指標包裝了一下然後提供給我們用的乙個相對安全方便的東西。

我個人把引用理解為乙個

const

指標,引用一旦初始化不能改變其指向的物件。下面舉了乙個例子來支援我的想法:

int a;

int *const conptr = &a;

int &ref = a;

while (cin >> a)

輸出結果為:

12&a      001efc5c

conptr: 001efc5c

*conptr:        12

ref     12

&ref    001efc5c

這段程式證實了我的想法:引用ref的本質其實就是conptr,我們可以理解成每當我們用到ref的時候c++都已經是進行解引用操作符(*conptr)。這樣我們就可以放心的使用ref而不用擔心ref指向其他的記憶體位址。

順便提一下引用較之指標的優點:

1. 引用宣告的時候必須初始化,且之後不能將其指向其他物件,這樣就可以保證引用不會指向未分配的記憶體位址。(若指向的記憶體位址被釋放了那麼引用也會發生錯誤)

2. 引用不能申明為null,這樣就不會發生像空指標一樣的危險情況。

指標與指標的引用

c 之研究 指標和引用 vb中的函式或過程的引數有2種傳遞方式 一種是值傳遞 一種是引用傳遞。分別用keywordbyval和keywordbyref指出。假設引數是以引用傳遞的話,函式或過程內部就能夠靠這個引用引數來改變外部變數的值。在c語言中,假設要實如今函式內部改變外部變數的值的話,就應該傳遞...

指標的引用( )與指標的指標( )

在下列函式宣告中,為什麼要同時使用 和 符號?以及什麼場合使用這種宣告方式?void func1 myclass pbuildingelement 論壇中經常有人問到這樣的問題。本文試圖通過一些實際的指標使用經驗來解釋這個問題。仔細看一下這種宣告方式,確實有點讓人迷惑。在某種意義上,和 是意思相似的...

指標與引用

摘自 高質量c 程式設計 指標與引用,在more effective c 的條款一有詳細講述,我給你轉過來 條款一 指標與引用的區別 指標與引用看上去完全不同 指標用操作符 和 引用使用操作符 但是它們似乎有相同的功能。指標與引用都是讓你間接引用其他物件。你如何決定在什麼時候使用指標,在什麼時候使用...