C/C++函數(shù)參數(shù)傳遞機制詳解及實例

C/C++函數(shù)參數(shù)傳遞機制詳解及實例

創(chuàng)新互聯(lián)公司從2013年成立,是專業(yè)互聯(lián)網(wǎng)技術服務公司,擁有項目成都做網(wǎng)站、網(wǎng)站制作網(wǎng)站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元鳳縣做網(wǎng)站,已為上家服務,為鳳縣各地企業(yè)和個人服務,聯(lián)系電話:18980820575

概要:

C/C++的基本參數(shù)傳遞機制有兩種:值傳遞和引用傳遞,我們分別來看一下這兩種的區(qū)別。

(1)值傳遞過程中,需在堆棧中開辟內(nèi)存空間以存放由主調(diào)函數(shù)放進來的實參的值,從而成為了實參的一個副本。值傳遞的特點是被調(diào)函數(shù)對形參的任何操作都是作為局部變量進行,不會影響主調(diào)函數(shù)的實參變量的值。

(2)引用傳遞過程中,被調(diào)函數(shù)的形參雖然也作為局部變量在堆棧中開辟了內(nèi)存空間,但是這時存放的是由主調(diào)函數(shù)放進來的實參變量的地址。被調(diào)函數(shù)對形參的任何操作都被處理成間接尋址,即通過堆棧中存放的地址訪問主調(diào)函數(shù)中的實參變量。正因為如此,被調(diào)函數(shù)對形參做的任何操作都影響了主調(diào)函數(shù)中的實參變量。

下面我們來看一個示例。

/*
*測試函數(shù)參數(shù)傳遞機制
*/
class CRect {

public:
  int height;
  int widht;

  CRect() {
    height = 0;
    widht = 0;
  }

  CRect(int height, int widht) {
    this->height = height;
    this->widht = widht;
  }

};

//(1)傳址調(diào)用(傳指針)
int RectAreaPoint(CRect *rect) {
  int result = rect->height * rect->widht;
  rect->height = 20;
  return result;
}

//(2)引用傳遞
int RectAreaRefer(CRect &rect) {
  int result = rect.height * rect.widht;
  rect.height = 30;
  return result;

}

//(3)傳值調(diào)用
int RectArea(CRect rect) {
  int result = rect.height * rect.widht;
  rect.height = 40;
  return result;
}

看一下我們的測試代碼和測試結果。

//測試代碼邏輯
void testPoint() {
  CRect rect(10, 10);
  cout << "面積:" << RectAreaPoint(&rect) << endl;
  cout << "面積:" << RectAreaRefer(rect) << endl;
  cout << "rect.height:" << rect.height << endl;
  cout << "面積:" << RectArea(rect) << endl;
  cout << "rect.height:" << rect.height << endl;
}

//測試結果
面積:100
面積:200
rect.height:30
面積:300
rect.height:30

可以發(fā)現(xiàn)傳址調(diào)用和引用傳遞兩種方式,當改變形參的值時,同時也會將實參的值改變,而傳值調(diào)用改變形參則對實參沒有任何影響。

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

當前題目:C/C++函數(shù)參數(shù)傳遞機制詳解及實例
本文來源:http://bm7419.com/article38/jcecpp.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供用戶體驗、軟件開發(fā)、外貿(mào)網(wǎng)站建設、營銷型網(wǎng)站建設、品牌網(wǎng)站制作、電子商務

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站托管運營