程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> C++引用類型

C++引用類型

編輯:關於C++

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

(一) 定義:

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

\

 

 

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

(二)基本數據類型的引用

如下面的一段代碼:

 

#include 
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 
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 
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的別名。


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved