C++ 引用類型

原文鏈接:https://blog.csdn.net/stop_and_go/article/details/51334137

這兩天在看數據結構,總結下內容

說到引用,先來講一個故事:我們生活的院子裏有這樣一個小盆友,他的名字叫羅XX,我們喜歡給他起一個外號,看着他營養不太好,腦袋比較大、身子比較小,於是我們就給他起了一個叫"蘿蔔頭"的外號。那麼羅XX就是他的真實姓名,蘿蔔頭就是他的一個別名,那麼什麼是引用呢??

定義:引用:就是變量的一個別名。

注:作爲別名來說,一個變量不能只有別名,而沒有自己的真實姓名。

基本數據類型的引用

如下面的一段代碼:

實例

#include <iostream>

using namespace std;

{ int a = 3; int &b = a; //b就是a的引用,即b是a的一個別別名。

//引用必須初始化,否則編譯會報錯

b = 10; cout<< a << endl; //此時a 的值,已由原來的3變成了10.因爲我們無論對別名做什麼操作,其實都是對變量的本身做操作。就像我們去交蘿蔔頭去幹什麼,羅XX本身就去幹什麼。

return 0;

}

結構體類型的引用

如下面的一段代碼:

實例

#include <iostream>

using namespace std; //定義一個名叫Coor的結構體,這是一個座標。

typedef struct {

    int x;

   int y; }Coor;

int main(void)

    { Coor c1; //定義一個結構體變量,叫c1.

   Coor &c = c1; //給c1起了一個別名叫c.

    c.x = 10; //通過引用給結構體變量的數據成員賦值

    c.y = 20;

    cout<< c1.x << c2.y; //輸出的結果:10 20

return 0;

}

指針類型的引用

指針類型的引用是引用當中最爲複雜,最難理解的一部分,同時在寫法形式上也有着與衆不同的地方。

定義:

 類型 *&指針引用名 = 指針;

看個例子:

實例

#include <iostream>

using namespace std;

int main(void)

{ int a = 10; //定義一個整型的a變量,a的值爲10。

int *p = &a; //定義一個指向a變量的指針

int *&q = p; //定義一個指針的引用,即q爲p的別名。 定義方法:類型 *&指針引用名 = 指針;

*q = 20; //把20賦給*q,相當於是把20賦值給*p,也就相當於把20賦值給a.

cout<< a << endl; //輸出a 的值爲20.

return 0;

}

引用作函數參數

在沒有學習引用之前我們學習 C 語言時,學過這樣的經典程序:

//將兩個值進行交換

void fun( int *a,int *b) //形參爲兩個整型的指針變量

{ int temp = 0; //定義一個臨時變量。良好的習慣是定義一個變量並初始化它;

c = *a; //將*a賦值給c;

*a = *b; //將*b賦值給*a;

*b = c; //再將c賦值給*b;這樣就完成了a、b數值的交換

}

int x = 10,y = 20;

fun(&x,&y); //在主函數中調用時,傳過去的實參需要寫成 取地址a,取地址b,比較麻煩,也不易理解。

現在我們學習了引用,在完成同等功能時需要寫成什麼樣子?

實例

void fun (int &a, int &b) //形參爲兩個整型的引用

{ int temp = 0;

c = a;

a = b;

b = c; }

int x = 10,y = 20;

fun(x,y); //在主函數中調用時,實參傳過去後a是x的別名,b是y的別名。

看原文會比較方便些,我這是複製過來的。原文地址:https://blog.csdn.net/stop_and_go/article/details/51334137

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章