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


引用作為函數參數

C++之所以增加引用類型, 主要是把它作為函數參數,以擴
充函數傳遞數據的功能。

————————————————————

c++,函數傳參:
(1)將變量名作為實參和形參。這時傳給形參的是變量的值,
傳遞是單向的。如果在執行函數期間形參的值發生變
化,並不傳回給實參。因為在調用函數時,形參和實參
不是同一個存儲單元。//同c


(2) 傳遞變量的指針。形參是指針變量,實參是一個變量的
地址,調用函數時,形參(指針變量)指向實參變量單元。
這種通過形參指針可以改變實參的值。//同c


(3) C++提供了 傳遞變量的引用。形參是引用變量,和實參是
一個變量,調用函數時,形參(引用變量)指向實參變量
單元。這種通過形參引用可以改變實參的值。

 

#include <iostream>
using namespace std;
void funcr(int &num , int x)
{
    cout<<"in funcr,addr is:"<<&num<<endl;//對比地址,等於原地址
    num = x ;//會改變傳入參數的值。 
}

void func(int num , int x)//不能寫成void funcr(int num , int x),不正確的重載,導致不知道該調用誰。
{
    cout<<"in func,addr is:"<<&num<<endl;//對比地址,有所變化
    num = x ;//只會在函數內改變拷貝變量的值,不會改變傳入的參數值
} 

int main() {
    int x = 100;
    int &rx = x ;
    cout<<"addr_x:"<<&x<<endl;
    cout<<"addr_rx:"<<&rx<<endl;//變量地址和它的引用地址相同


    funcr(x,177);//改變傳入參數的值,不管代碼中傳的是變量本身還是引用   
    cout<<"after funcr , x="<<x<<endl;

    funcr(rx,211);  //改變傳入參數的值          
    cout<<"after funcr , rx="<<x<<endl;

    func (rx,233); //不會改變傳入參數的值,不管代碼中傳的是變量本身還是引用                 
    cout<<"after func , rx="<<x<<endl;

    while(1);
    return 0 ;
} 
//測試結果:
addr_x:0xbf82293c
addr_rx:0xbf82293c
in funcr,addr is:0xbf82293c
after funcr , x=177
in funcr,addr is:0xbf82293c
after funcr , rx=211
in func,addr is:0xbf822920
after func , rx=211

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM