最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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ù)放進來的實參的值,從而成為了實參的一個副本。值傳遞的特點是被調(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;
}

看一下我們的測試代碼和測試結(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++自帶的查找函數(shù)詳解

    c++自帶的查找函數(shù)詳解

    這篇文章主要介紹了c++自帶的查找函數(shù),本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-09-09
  • c++ signal實現(xiàn)發(fā)送信號

    c++ signal實現(xiàn)發(fā)送信號

    這篇文章主要為大家詳細(xì)介紹了c++ signal實現(xiàn)發(fā)送信號的相關(guān)知識,文中的示例代碼講解詳細(xì),具有一定的學(xué)習(xí)價值,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-01-01
  • C++實現(xiàn)strcmp字符串比較的深入探討

    C++實現(xiàn)strcmp字符串比較的深入探討

    本篇文章是對使用C++實現(xiàn)strcmp字符串比較進行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • C++結(jié)合OpenCV實現(xiàn)RRT算法(路徑規(guī)劃算法)

    C++結(jié)合OpenCV實現(xiàn)RRT算法(路徑規(guī)劃算法)

    這篇文章主要介紹了C++結(jié)合OpenCV實現(xiàn)RRT算法,RRT算法整體框架主要分為rand、near、new三點的建立和near與new之間的安全性檢查,需要的朋友可以參考下
    2022-05-05
  • c++利用windows函數(shù)實現(xiàn)計時示例

    c++利用windows函數(shù)實現(xiàn)計時示例

    這篇文章主要介紹了c++利用windows函數(shù)實現(xiàn)計時示例,需要的朋友可以參考下
    2014-05-05
  • C++讀取帶空格字符串的方法

    C++讀取帶空格字符串的方法

    今天小編就為大家分享一篇C++讀取帶空格字符串的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-07-07
  • C語言實現(xiàn)鏈隊列代碼

    C語言實現(xiàn)鏈隊列代碼

    這篇文章主要為大家詳細(xì)介紹了C語言實現(xiàn)鏈隊列代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-07-07
  • 詳解C++ 引用

    詳解C++ 引用

    這篇文章主要介紹了C++ 引用的相關(guān)資料,文中示例代碼非常詳細(xì),幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-07-07
  • C++ 之explicit關(guān)鍵字

    C++ 之explicit關(guān)鍵字

    今天我們來談?wù)凜++中的explicit關(guān)鍵字,這篇文章詳細(xì)介紹了C語言的關(guān)鍵字explicit關(guān)鍵字,本文有詳細(xì)的代碼實例,感興趣的同學(xué)可以借鑒參考
    2023-04-04
  • C++基于QWidget和QLabel實現(xiàn)圖片縮放,拉伸與拖拽

    C++基于QWidget和QLabel實現(xiàn)圖片縮放,拉伸與拖拽

    這篇文章主要為大家詳細(xì)介紹了C++如何基于QWidget和QLabel實現(xiàn)圖片縮放、拉伸與拖拽等功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-02-02

最新評論

卢湾区| 乐至县| 五台县| 石狮市| 灵山县| 黄梅县| 延边| 孙吴县| 巨野县| 栖霞市| 无为县| 连城县| 会昌县| 威海市| 余庆县| 昌邑市| 景宁| 肃宁县| 信阳市| 湖口县| 蓬溪县| 丰台区| 登封市| 衡山县| 海南省| 凤山市| 新营市| 武川县| 滦平县| 信宜市| 安庆市| 定陶县| 瑞昌市| 海伦市| 那曲县| 盐山县| 五华县| 上犹县| 连城县| 醴陵市| 邹城市|