SM系列网站-swag尤物在线-TS恩静一区二区三区-Ts另类人妖一二三-ts抢先版在线观看-ts清晰版在线观看

資訊

精準傳達 ? 有效溝通

從品牌網站建設到網絡營銷策劃,從策略到執行的一站式服務

C++ 中的值傳遞和引用傳遞

來源:公司資訊 | 2021.08.18

本文主要介紹C++中的值傳遞(pass-by-value)和引用傳遞(pass-by-reference)的區別。

1 pass-by-value

在 C++ 里面,一個函數在使用參數時,如果使用 pass-by-value 方式,那么編譯系統會在調用該函數的地方,把實參復制一份傳給函數的形參。

用法示例:int FunA(string strTest);

這種做法有以下幾個問題:

第一,如果在函數里修改傳給函數的參數值,實際上我們修改的只是實參的副本,而在調用函數的位置,這個實參值本身沒有改變;

第二,此過程中進行的副本拷貝動作會耗費系統的資源,如果拷貝的參數是比較復雜的 struct 或者 class 等類型,復制出一份副本的成本(時空開銷)很大;

2 pass-by-reference

在 C++ 里面,一個函數在使用參數時,如果使用 pass-by-reference 方式,那么編譯系統會在調用該函數的地方,直接將實參的內存地址(指針)傳給形參。

用法示例:int FunA(string & strTest);

這種做法有以下幾點好處:

第一,由于函數的參數傳遞的是把實參的地址拷貝給形參,因此形參和實參對應的是同一塊內存地址,所以對形參的修改自然會反映到實參上;

第二,在 C++ 中,指針(內存地址)是一個 int 類型,所以即使在 64 位系統中,指針的復制成本(8字節)也是完全可以接受的;

第三,因為 C++ 規定引用不能為空,所以在函數中傳進來引用可以直接使用,而如果傳進來的是指針類型(實際上是值傳遞、引用傳遞之外的指針傳遞方式),那么還需要先判斷指針是否為空,易用性不強。

3 總結

綜合對比上述兩種函數參數的值傳遞方式,可以看出在C++中,一般情況下都會優先使用“引用傳遞”。

例如:

int FunA(const string strTest)  // 值傳遞

{

    // some codes

}

 

int FunB(const string & strTest)    // 引用傳遞,這里加了const關鍵字,為常引用。優選

{

    // some codes

}

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

版權聲明:本文為CSDN博主「liitdar」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。

原文鏈接:https://blog.csdn.net/liitdar/article/details/85982561

 

—— 靈通云微信公眾號 ——

熱門標簽

上一條———————

下一條———————

十七年 建站經驗

多一份參考,總有益處

聯系靈通云,免費獲得專屬《策劃方案》及報價

咨詢相關問題或預約面談,可以通過以下方式與我們聯系

業務熱線:400-688-6062 / 大客戶專線   南通:15818561755

主站蜘蛛池模板: 又污又黄又无遮挡网站 | 精品国产三级a | 黄色网址视频在线播放 | 国产亚洲精品久久无码小说 | 无码成人性爽XO视频在线观看 | 国产精品人妻一区二区三区无码 | 性瘾日记 qvod | 国产精品三级在线观看 | 中国chinese国产高清 | 国产真人性做爰视频免费40分钟 | 娇喘潮喷抽搐高潮麻豆A片 娇喘呻吟欲仙欲死的娇妻 娇妻被朋友玩得呻吟在线电影 | av狼 地址 | 国产精品成久久久久三级 | 久久AV亚洲精品一区无码网 | 黄色日b视频 | 粗大的内捧猛烈进出A片 | 好大好深我高潮了A片 | 国产SUV精二区69 | www..com黄| 天天操天天干天天干 | 亚洲日产国产 | blue片免费观看视频 | 蜜桃少妇AV久久久久久高 | 亚洲高清无在码在线电影 | 综合精品欧美日韩国产在线 | 日韩欧美伦理片 | 国产亚洲精品97在线视频一 | 一本到12不卡视频在线dvd | 制服丝袜中文字幕在线 | www.av天堂.com| 呦导航福利精品 | 无码欧美又大又色又爽AAAA片 | 原来的琪琪电影在线看 | 中文字幕日韩在线 | 免费又粗又硬进去好爽A片 免费又色又爽又黄的视频 免费中文字幕囯产在线网站 | 蜜臀国产| 亚洲美女毛茸茸 | 蝴蝶谷成人网站 | 九九视频免费精品视频免费 | 狠狠操网站 | 最近更新中文字幕大全免费 |