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

C++引用作為函數的參數,引用函數參數

編輯:C++入門知識

C++引用作為函數的參數,引用函數參數


  引用也可以作為一個函數的參數,如:我們定義交換兩個數的函數swap,將函數的參數定義成引用的形式:  

1 void swap(int &p1, int &p2)    //此處函數的形參都是引用
2 {
3     int p;
4     p=p1;
5     p1=p2;
6     p2=p;
7 }

 

 

  為了在程序中調用該函數,在相應的主調函數的調用點處直接以變量作為實參進行調用即可,而不需要對實參變量有任何的特殊要求。如上面定義的swap函數的主調函數可寫為:

 

int main()
{
    int a,b;
    cin >> a >> b;    //輸入a,b兩變量的值
    swap(a,b);         //直接以變量a和b作為實參調用swap函數即可
    cout << a << ' ' << b;
    return 0;
}

 

  當發生函數調用時,主調函數的調用點處的實參變量a和b分別傳遞給被調用函數的形參p1和p2,由於形參p1和p2定義成引用的形式,所以這時p1就是實參a的引用,p2就是實參b的引用。所以,在被調函數swap中,任何對形參p1和p2的操作實質就是對實參a和b的操作。

 

  由此,有幾點需要注意:

  • 傳遞引用給函數與傳遞指針的效果是一樣的,這時被調函數的形參就作為原來主調函數中的實參變量或對象的一個別名來使用,所以在被調函數中對形參變量的操作就是對其相應的目標對象(在主調函數中)的操作;
  • 使用引用傳遞函數的參數在內存中並沒有產生實參的副本(因為引用只是目標變量的別名而不是一個新的變量),且它是直接對實參操作;而使用一般變量傳遞函數的參數,當發生函數調用時需要給形參分配存儲單元,這樣形參與實參就占用不同的存儲單元,所以形參變量的值時實參變量的副本。因此,當參數傳遞的數據量較大時,用引用比較好。
  • 使用指針作為函數的參數雖然也能達到與使用引用一樣的效果,但是,在被調函數中需要重復使用“*指針變量名"的形式進行運算,容易產生錯誤且程序的閱讀性較差。    

 

本人自學,教材可能有點老,有問題的話求大家指正!!!謝謝!!!

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