C++引用

對於習慣使用C進行開發的程序員來講,在看到C++中出現的&符號,可能會犯迷糊,由於在C語言中這個符號表示了取地址符,可是在C++中,它除了取地址,還有其它的用途,叫作引用(reference),引用是C++的新特性。程序員

1、引用的概念

引用就是變量的別名,對引用的操做與對變量直接操做徹底同樣。數組

引用的聲明方法:ide

類型標識符 &引用名=目標變量名;

例如:函數

int a; 
int &ra=a;  // 定義引用ra,它是變量a的引用,即別名。
ra=1;  等價於  a=1;

說明:.net

1)&在此不是求地址運算,而是起標識做用。指針

2)類型標識符是指目標變量的類型。code

3)聲明引用時,必須同時對其進行初始化,不然編譯器會報錯,因此,不能再把引用名做爲其餘變量名的別名。對象

4)引用聲明後,至關於目標變量名有兩個名稱。blog

5)聲明一個引用,不是新定義了一個新的變量,它只表示該引用名是目標變量名的一個別名,它自己不是一種數據類型,所以引用自己不佔存儲單元,系統也不給引用分配存儲單元。圖片

6)不能創建數組的引用。由於數組是一個由若干個元素所組成的集合,因此沒法對數據創建引用。

7)引用能夠用const修飾,表示只讀,用這種方式聲明的引用,不能經過引用對目標變量的值進行修改。

int a;
  const int &ra=a;
  a=10;    // 能夠
  ra=10;   // 不行

2、引用的應用

引用的主要做用就是做爲函數的參數。

在C語言中函數參數是值傳遞,若是有大塊數據做爲參數傳遞的時候,採用的方案是傳遞數據的地址。

在C++中,又增長了一種一樣有效率的選擇,就是引用。

示例(book212.cpp)

/*
 * 程序名:book212.cpp,此程序用於演示C++的引用
 * 做者:C語言技術網(www.freecplus.net) 日期:20190525
*/
#include <stdio.h> 

void func(int *a) // a是一個指針變量
{ *a=20; }

void func(int &ra) // ra是一個引用
{ ra=30; }

int main () 
{ 
  int ii=0;

  func(&ii);  // 傳遞變量的地址
  printf("1 ii=%d\n",ii);

  func(ii);   // 引用
  printf("2 ii=%d\n",ii);
}

運行效果

在這裏插入圖片描述

從以上的示例能夠看出,傳遞引用給函數與傳遞指針的效果是同樣的。這時,被調函數的參數就成爲調用者調函數中的變量或對象的一個別名來使用,因此在被調函數中對引用的操做就是對目標變量的操做。

在不少資料中,把引用的優勢過於誇大,在我看來,引用的好處就是調用函數的時候,不用填寫取地址符&,子函數中也不寫取變量符*,結構體和類不用-\>取成員。但我更傾向傳遞地址的方式,更直觀,無論是在函數內部仍是函數被調用的地方,一眼就能清楚是不是地址。

引用還能夠做爲函數的返回值,但我不建議這麼用,我實在看不出這樣作有什麼好處,那就不必把事情搞得那麼複雜,因此這裏就不介紹了。

3、課後做業

編寫示例程序,把本章節介紹的知識點所有演示一遍,用程序演示能夠加深您的理解和映象。

4、版權聲明

C語言技術網原創文章,轉載請說明文章的來源、做者和原文的連接。
來源:C語言技術網(www.freecplus.net)
做者:碼農有道

若是這篇文章對您有幫助,請點贊支持,或在您的博客中轉發個人文章,謝謝!!!若是文章有錯別字,或者內容有錯誤,或其餘的建議和意見,請您留言指正,很是感謝!!!

相關文章
相關標籤/搜索