C 引用學習

2021-07-16 15:50:48 字數 1224 閱讀 2122

引用是為物件起的另外乙個名字,定義的格式為: 型別 &引用變數名 = 已定義過的變數名。例如:

int a=10;

int &b=a; //b是a的引用

1>乙個變數可取多個別名

2> 引用必須初始化 

3>引用只能在初始化的時候引用一次,不能改變為再引用其他的變數。

定義引用時,程式會把引用的它的初始值繫結在一起,一旦初始化,引用將和它的初始值物件一直繫結在一起,所以無法再引用其他變數,且必須初始化。

1>引用乙個引用變數

實際上相當於給別名再次起了乙個別名

2>const引用

被const修飾的引用相當於乙個常量

void test ()

有且只有被const修飾的引用可以引用乙個常量

void test()

被const 修飾的 int型別的引用可以引用乙個double型別的資料,但是會丟失資料。如果不用const修飾,則編譯器會報錯。

void test()

3>引用作為引數

引用作為函式引數可以直接在函式內部改掉傳進來的實參的值,非常方便。

void swap (int& left, int& right)

//通過引用改掉了傳進來的實參值

如果不希望改掉實參的值,盡量使用常引用傳參

4>引用作為返回值

引用作為返回值時,一定要注意不能返回臨時變數的引用。臨時變數的引用在返回時,系統會將臨時變數的位址放到暫存器中(感興趣為什麼是這樣的話可以嘗試看一下對應的彙編**),所以相當於返回了臨時變數的位址,如果那塊空間沒有被占用的話結果是對的,但這只是一種僥倖正確的情況,一旦空間被占用,結果將變成乙個隨機值。

學習引用,我們會發現,它貌似和指標很相似,那麼它和指標有哪些區別呢?

1>引用只能在定義時初始化一次,之後不能改變指向其它變數(從一而終);指標變數的值可變。 

2> 引用必須指向有效的變數,指標可以為空。

3>sizeof指標物件和引用物件的意義不一樣。sizeof引用得到的是所指向的變數的大小,而sizeof指標是物件位址的大小。 

4> 指標和引用自增(++)自減(--)意義不一樣。

5> 相對而言,引用比指標更安全。

指標比引用更靈活,但是也更危險。

C 學習 引用

int n 7 int r n r 4 cout r 4 cout n 4 n 5 cout r 5定義引用之後,引用和原變數是一回事兒,更改了乙個,另外乙個也就跟著改了 強調引用的幾個概念 double a 4,b 5 double r1 a double r2 r1 r2也引用a,這樣三個量都相...

C 學習 引用

作用 給變數起別名 語法 資料型別 別名 原名 引用 int a 10 int b a cout a a endl a 10 cout b b endl b 10 b a cout a a endl a 12 cout b b endl b 121,引用必須要初始化 2,引用一旦初始化後就不可以更改...

c 學習筆記 引用

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