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

C++中如何使用引用避免內(nèi)存復(fù)制

 更新時(shí)間:2023年10月09日 11:24:30   作者:圖靈,圖靈,圖個(gè)機(jī)靈  
C++引用是一種強(qiáng)大的工具,可以避免在函數(shù)調(diào)用過(guò)程中發(fā)生的常見(jiàn)內(nèi)存復(fù)制問(wèn)題,本文主要介紹了C++中如何使用引用避免內(nèi)存復(fù)制,感興趣的可以了解一下

引用讓您能夠訪問(wèn)相應(yīng)變量所在的內(nèi)存單元,這使得編寫(xiě)函數(shù)時(shí)引用很有用。典型的函數(shù)聲明類(lèi)似于下面這樣:

ReturnType DoSomething(Type parameter);

調(diào)用函數(shù) DoSomething() 的代碼類(lèi)似于下面這樣:

ReturnType Result = DoSomething(argument); // function call

上述代碼導(dǎo)致將 argument 的值復(fù)制給 Parameter,再被函數(shù) DoSomething() 使用。如果 argument 占用了大量?jī)?nèi)存,這個(gè)復(fù)制步驟的開(kāi)銷(xiāo)將很大。同樣,當(dāng) DoSomething() 返回值時(shí),這個(gè)值被復(fù)制給 Result。如果能避免這些復(fù)制步驟,讓函數(shù)直接使用調(diào)用者棧中的數(shù)據(jù)就太好了。為此,可使用引用。
可避免復(fù)制步驟的函數(shù)版本類(lèi)似于下面這樣:

ReturnType DoSomething(Type& parameter); // note the reference&

調(diào)用該函數(shù)的代碼類(lèi)似于下面這樣:

ReturnType Result = DoSomething(argument);

由于 argument 是按引用傳遞的, Parameter 不再是 argument 的拷貝,而是它的別名。另外,接受引用參數(shù)的函數(shù)可使用這些參數(shù)返回值,如下面示例程序所示:

#include <iostream>
using namespace std;
void GetSquare(int& number)
{
    number *= number;
}
int main()
{
    cout << "Enter a number you wish to square: ";
    int number = 0;
    cin >> number;
    GetSquare(number);
    cout << "Square is: " << number << endl;
    return 0;
}

輸出:

Enter a number you wish to square: 5
Square is: 25

分析:

計(jì)算平方的函數(shù)位于第 3~6 行。它通過(guò)引用參數(shù)接受一個(gè)要計(jì)算其平方的數(shù)字,并通過(guò)該參數(shù)返回結(jié)果。如果忘記將參數(shù) number 聲明為引用( &), 結(jié)果將無(wú)法返回到調(diào)用函數(shù) main(), 因?yàn)?nbsp;GetSquare() 將使用 number 的本地拷貝執(zhí)行運(yùn)算, 而函數(shù)結(jié)束時(shí)該拷貝將被銷(xiāo)毀。通過(guò)使用引用, 可確保 GetSquare() 對(duì) main() 中定義的 number 所在的內(nèi)存單元進(jìn)行操作。這樣,函數(shù) GetSquare() 執(zhí)行完畢后,也可以在 main() 中使用運(yùn)算結(jié)果。

在這個(gè)示例中,修改了輸入?yún)?shù)。如果要保留這兩個(gè)值—傳入的數(shù)字及其平方,可讓函數(shù)接受兩個(gè)參數(shù):一個(gè)包含輸入;另一個(gè)提供平方值。

到此這篇關(guān)于C++中如何使用引用避免內(nèi)存復(fù)制的文章就介紹到這了,更多相關(guān)C++ 引用避免內(nèi)存復(fù)制內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C++實(shí)現(xiàn)LeetCode(53.最大子數(shù)組)

    C++實(shí)現(xiàn)LeetCode(53.最大子數(shù)組)

    這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(53.最大子數(shù)組),本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • VsCode配置C++/Cmake的步驟詳解

    VsCode配置C++/Cmake的步驟詳解

    本文分步驟給大家介紹VsCode配置C++/Cmake的方法,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),需要的朋友參考下吧
    2021-07-07
  • 如何在C語(yǔ)言的宏中使用類(lèi)型關(guān)鍵字

    如何在C語(yǔ)言的宏中使用類(lèi)型關(guān)鍵字

    如何在C語(yǔ)言的宏中使用類(lèi)型關(guān)鍵字呢?以下是實(shí)現(xiàn)方法。需要的朋友可以過(guò)來(lái)參考下,希望對(duì)大家有所幫助
    2013-10-10
  • 用C語(yǔ)言簡(jiǎn)單實(shí)現(xiàn)掃雷小游戲

    用C語(yǔ)言簡(jiǎn)單實(shí)現(xiàn)掃雷小游戲

    這篇文章主要為大家詳細(xì)介紹了用C語(yǔ)言簡(jiǎn)單實(shí)現(xiàn)掃雷小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • C++實(shí)現(xiàn)教職工信息管理系統(tǒng)課程設(shè)計(jì)

    C++實(shí)現(xiàn)教職工信息管理系統(tǒng)課程設(shè)計(jì)

    這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)教職工信息管理系統(tǒng)課程設(shè)計(jì),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • boost字符串處理函數(shù)format的用法

    boost字符串處理函數(shù)format的用法

    這篇文章介紹了boost字符串處理函數(shù)format的用法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-06-06
  • C++?smart?pointer全面深入講解

    C++?smart?pointer全面深入講解

    一般在C/C++中,如果我們使用了pointer來(lái)指向某塊heap區(qū)域,當(dāng)不再需要這塊區(qū)域的時(shí)候,我們需要手動(dòng)刪除它。如果忘了的話,就會(huì)產(chǎn)生memory?leak
    2022-08-08
  • C++實(shí)現(xiàn)歸并排序算法

    C++實(shí)現(xiàn)歸并排序算法

    這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)歸并排序算法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-03-03
  • C++ com編程學(xué)習(xí)詳解

    C++ com編程學(xué)習(xí)詳解

    這篇文章主要介紹了C++ COM編程的學(xué)習(xí)過(guò)程,在C++中,可以使用抽象基類(lèi)來(lái)實(shí)現(xiàn)COM接口,需要的朋友可以參考下,希望能夠給你帶來(lái)幫助
    2021-09-09
  • VScode platformio使用的詳細(xì)步驟

    VScode platformio使用的詳細(xì)步驟

    使用VSCode作為編輯器,同時(shí)借助PlatformIO插件,可以幫助開(kāi)發(fā)者更加高效地進(jìn)行嵌入式開(kāi)發(fā),本文主要介紹了VScode platformio使用的詳細(xì)步驟,感興趣的可以了解一下
    2023-10-10

最新評(píng)論