C 中的引用(記錄 理解)

2021-08-27 05:34:55 字數 1343 閱讀 8969

type& name = var;

int main()

注意:普通引用在宣告時,必須用其他的變數進行初始化(不能用常量進行初始化)

swap函式的實現對比:

void swap(int& a,int& b)

swap(a,b);

void swap(int* pa,int* pb)

swap(&a,&b);

注意:引用作為函式引數宣告時不用進行初始化

理解:對①開始存在疑惑,覺得swap(a,b);複製了a,b的值到函式中,而沒有改變真正的a,b的值,此理解有誤。對①來說swap(a,b);傳送了a與b的變數名到函式中為函式中的引數取名,則void swap(int& ,int& b)中的a,b是引數。這個函式是能夠操作a,b的儲存空間內的值來改變a,b的值的

補充③

void swap(int a,int b)

swap(a,b);

這個不能實現a,b值的交換,原因在上述「理解」中已寫明

int main()

理解:在c++中,對比const常量和const引用。c++中,const引用的功能好像是是把這個變數故意變成c語言中的功能(c語言中const變數只具有不能成為左值的功能,但是還是可以通過指標解引用的方式改變這個變數的值)。c++中const常量是真的把乙個變數變成乙個不可改變的(在c++與c的關係裡有詳細說明)

int main()

注意:使用常量對const引用初始化後將生成乙個唯讀變數

提出乙個問題:

引用有自己的儲存空間嗎?

struct tref

;int main()

void f(int& a)             void f(int * const a)

}

int a = 1;

int b = 2;

(a3;//正確,返回的是a或b的引用,可以作為右值使用

(a1:b) = 3;//錯誤,可能返回中有常量,返回的是值,不能作為右值使用

小結

課後習題:

待完成

理解 C 中的引用 Reference

常引用引用作為返回值 更多細節 引用是乙個別名,也就是某個已存在的變數的另乙個名字。對某個物件的引用進行操作,就是直接對這個物件進行操作。建立乙個引用的語句如下 型別識別符號 引用變數名 目標變數名 例如 原始變數 int a double b 宣告引用變數 int ref a a double r...

C 全面理解C 中的引用

說到引用,一般c 的教材中都是這麼定義的 1,引用就是乙個物件的別名。2,引用不是值不佔記憶體空間。3,引用必須在定義時賦值,將變數與引用繫結。那你有沒有想過,上面的定義正確嗎?編譯器是如何解釋引用的?這裡先給出引用的本質定義,後面我們再進一步論證。1,引用實際是通過指標實現的。2,引用是乙個常量指...

C 全面理解C 中的引用

說到引用,一般c 的教材中都是這麼定義的 1,引用就是乙個物件的別名。2,引用不是值不佔記憶體空間。3,引用必須在定義時賦值,將變數與引用繫結。那你有沒有想過,上面的定義正確嗎?編譯器是如何解釋引用的?這裡先給出引用的本質定義,後面我們再進一步論證。1,引用實際是通過指標實現的。2,引用是乙個常量指...