欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時間:2017年02月14日 14:17:51   投稿:lqh  
這篇文章主要介紹了C/C++函數(shù)參數(shù)傳遞機制詳解及實例的相關(guān)資料,需要的朋友可以參考下

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

概要:

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

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

(2)引用傳遞過程中,被調(diào)函數(shù)的形參雖然也作為局部變量在堆棧中開辟了內(nèi)存空間,但是這時存放的是由主調(diào)函數(shù)放進(jìn)來的實參變量的地址。被調(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;
}

看一下我們的測試代碼和測試結(jié)果。

//測試代碼邏輯
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;
}

//測試結(jié)果
面積:100
面積:200
rect.height:30
面積:300
rect.height:30

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

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

相關(guān)文章

  • C++初識類和對象

    C++初識類和對象

    類是創(chuàng)建對象的模板,一個類可以創(chuàng)建多個對象,每個對象都是類類型的一個變量;創(chuàng)建對象的過程也叫類的實例化。每個對象都是類的一個具體實例(Instance),擁有類的成員變量和成員函數(shù)
    2021-10-10
  • 全面了解C語言?static?關(guān)鍵字

    全面了解C語言?static?關(guān)鍵字

    這篇文章主要介紹了全面了解C語言?static?關(guān)鍵字,文章首先通過先介紹一下頭文件的創(chuàng)建展開主題的詳細(xì)內(nèi)容,需要的小伙伴可以參考一下
    2022-04-04
  • C++實現(xiàn)基于時序公平的讀寫鎖詳解

    C++實現(xiàn)基于時序公平的讀寫鎖詳解

    讀寫鎖與普通的互斥鎖的區(qū)別在于有兩種上鎖方式:讀鎖和寫鎖,不用的用戶對同一個讀寫鎖獲取讀鎖是非互斥的,其他情況則是互斥的,本文小編將給大家詳細(xì)介紹C++實現(xiàn)基于時序公平的讀寫鎖,需要的朋友可以參考下
    2023-10-10
  • 關(guān)于《C和指針》的學(xué)習(xí)筆記

    關(guān)于《C和指針》的學(xué)習(xí)筆記

    本篇文章是對《C和指針》這本書的學(xué)習(xí)做了筆記介紹。需要的朋友參考下
    2013-05-05
  • C語言中數(shù)組排序淺析

    C語言中數(shù)組排序淺析

    這篇文章主要為大家介紹了C語言算法練習(xí)中數(shù)組元素排序的四種類型,文中的示例代碼講解詳細(xì),對我們學(xué)習(xí)C語言有一定幫助,需要的可以參考一下
    2022-12-12
  • C語言自定義數(shù)據(jù)類型的結(jié)構(gòu)體、枚舉和聯(lián)合詳解

    C語言自定義數(shù)據(jù)類型的結(jié)構(gòu)體、枚舉和聯(lián)合詳解

    這篇文章主要給大家介紹了關(guān)于C語言自定義數(shù)據(jù)類型的結(jié)構(gòu)體、枚舉和聯(lián)合的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-05-05
  • 怎么通過C語言自動生成MAC地址

    怎么通過C語言自動生成MAC地址

    以下是對使用C語言自動生成MAC地址的實現(xiàn)代碼進(jìn)行了詳細(xì)的分析介紹,需要的朋友可以過來參考下
    2013-09-09
  • 用C語言進(jìn)行最基本的socket編程

    用C語言進(jìn)行最基本的socket編程

    這篇文章主要介紹了C語言下socket編程的基本知識講解,包括最基本的客戶端發(fā)送及服務(wù)器端接受數(shù)據(jù)的實現(xiàn),需要的朋友可以參考下
    2015-11-11
  • 哈希表實驗C語言版實現(xiàn)

    哈希表實驗C語言版實現(xiàn)

    以下是對哈希表實驗用C語言實現(xiàn)的代碼進(jìn)行了詳細(xì)的分析介紹,需要的朋友可以參考下
    2013-07-07
  • VScode上配置 c語言環(huán)境的圖文教程

    VScode上配置 c語言環(huán)境的圖文教程

    這篇文章主要介紹了配置VScode c語言環(huán)境,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-05-05

最新評論