C 學習筆記 趣談引用

2021-09-07 20:20:46 字數 1203 閱讀 9610

在將引用的概念前,我們要不high一點,先聽聽歌放鬆一下(嘿嘿嘿):

聽完《達拉崩吧》是不是覺得瞬間有精神了。

好了我們回想一下這首歌的歌詞,這首歌造成的乙個困境是這個世界裡所有成員的名字都很長,騎士光騎士就叫「達拉崩吧斑得貝迪卜多比魯翁」,高達13個字的名字。

這麼長的名字帶來了什麼問題?

如果你把騎士的名字作為乙個變數,名叫「達拉崩吧斑得貝迪卜多比魯翁」,

要執行的操作是:

砍掉乙隻叫「昆相簿塔卡提考特蘇瓦西拉松」。於是就出現了歌詞**現的情況:

於是達拉崩巴斑得貝迪卜多比魯翁

砍向昆相簿塔卡提考特蘇瓦西拉松

然後昆相簿塔卡提考特蘇瓦西拉松

咬了達拉崩吧斑得貝迪卜多比魯翁

最後達拉崩巴斑得貝迪卜多比魯翁

他戰勝了昆相簿塔卡提考特蘇瓦西拉松

這樣不僅造成了描述的不方便,而且還十分容易唸錯。這時,我們既不想請「新的名字簡潔的騎士」又想使對這一過程的描述變得簡潔,那怎麼辦呢?

我們給他們取乙個外號不就好了嗎?

這就是引用的概念,給我們的變數取個「外號」,讓程式在不使用指標的情況下準確的指代乙個變數。

引用就是某一變數(目標)的乙個別名,這樣對引用的操作就是對目標的操作。

型別識別符號 &引用名 = 目標變數名

如:

int a;

int&ra = a; //定義引用ra,它是變數a的引用,及a的外號是ra。

假如我定義:

騎士& 騎士達 = 達拉崩巴斑得貝迪卜多比魯翁 ;

龍 & 昆圖龍 = 昆相簿塔卡提考特蘇瓦西拉松;

這時原歌詞就改為:

於是騎士達

砍向昆圖龍

然後昆圖龍

咬了騎士達

最後騎士達

他戰勝了昆圖龍

是不是清楚多了?在這裡騎士達只是「達拉崩巴斑得貝迪卜多比魯翁」的外號,其本質還是同乙個人,所以對騎士達的操作等效於對「達拉崩巴。。。。。」的操作,這樣就實現了和指標類似的操作,但又避免了指標由於涉及記憶體而產生的不必要的錯誤。

乙個函式的引數也可以定義成引用的形式,如:

void swap(int &p1,int &p2)
這裡的操作方式和指標的方式完全一樣,會對p1和p2進行改變。

c 學習筆記 引用

引用 引入物件的乙個同義詞,不會產生新的物件!例如 point p1 m,n point p2 p1 p2為p1的同義詞,改變p2的同時也會改變p1,但是編譯器並沒有給p2單獨分配記憶體,他和p1是共用一塊記憶體的!引用和const一樣,必須馬上初始化 例如如下類 class point publi...

C 學習筆記 引用

引用,reference 在本質上就是指標,從建立開始,就與目標繫結 指標定義 int a 123 int p a 稱作 p指向了變數a 引用定義 int a 123 int r a 引用的定義 稱作 r是變數a的引用 r引用了變數a 和指標是乙個意思 指標的使用 int a 123 int p a...

C 學習筆記 引用

引用是c語言中沒有,而在c 中又很重要的乙個概念,通過應用,可以得到變數本身,相對於得到變數的值而言,有更大的操作空間。變數的本質 變數名實質上是一段連續儲存空間的別名,是乙個標號 程式中通過變數來申請並命名記憶體空間 通過變數的名字可以使用儲存空間 引用是c 的概念,屬於c 編譯器對c的擴充套件i...