调教+捆绑+男男,韩国电影免费在线观看网站,爱电影视苹果下载,免费日本乱伦欧美,国产私人视频在线播放,亚洲男人的天堂a片我要看,亚洲品质自拍网站视频在线播放,午夜激爽免费毛片,女人与公拘i交酡i

專業(yè) 靠譜的軟件外包伙伴

您的位置: 首頁>>關(guān)于我們>>行業(yè)動態(tài)

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

2021-08-18 05:25:57

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

1 pass-by-value

在 C++ 里面,一個函數(shù)在使用參數(shù)時,如果使用 pass-by-value 方式,那么編譯系統(tǒng)會在調(diào)用該函數(shù)的地方,把實參復(fù)制一份傳給函數(shù)的形參。

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

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

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

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

2 pass-by-reference

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

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

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

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

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

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

3 總結(jié)

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

例如:

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

{

    // some codes

}

 

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

{

    // some codes

}

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

版權(quán)聲明:本文為CSDN博主「liitdar」的原創(chuàng)文章,遵循CC 4.0 BY-SA版權(quán)協(xié)議,轉(zhuǎn)載請附上原文出處鏈接及本聲明。

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

 

     [ 返回首頁] [ 打印] [ 返回上頁]    上一篇:艾瑞咨詢:中國IT服務(wù)市場規(guī)模持續(xù)提升,在2021年末有望接近一萬億元    下一篇:每天學(xué)習(xí)一點點,每天都在進步-前端2