日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 人文社科 > 生活经验 >内容正文

生活经验

C++ 函数参数 值传递与引用传递

發(fā)布時(shí)間:2023/11/27 生活经验 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C++ 函数参数 值传递与引用传递 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

以前我們?cè)贑語(yǔ)言中函數(shù)參數(shù)傳遞過(guò)程中,如果我們想要讓當(dāng)A函數(shù)作用域中的變量經(jīng)過(guò)B函數(shù)處理之后的數(shù)值仍然在A函數(shù)中生效,這個(gè)時(shí)候函數(shù)參數(shù)的傳遞時(shí)需要引用方式去傳遞,方式如下:

#include <stdio.h>
//函數(shù)參數(shù)為指針,通過(guò)修改指針里面的內(nèi)容達(dá)到對(duì)main中b變量的修改
void func(int *a) 
{printf("value is %d \n",*a);*a = 20;                                                                                                                                                                                                                                                              
}
int main()
{int b=10;//參數(shù)傳遞的時(shí)候傳入b變量的地址即可func(&b);printf("from main and b is %d\n",b);return 0;
}

編譯運(yùn)行,結(jié)果如下
value is 10
from main and b is 20

C++通同樣需要如此,只是語(yǔ)法有部分差異,同時(shí)當(dāng)類(lèi)的實(shí)例作為函數(shù)時(shí)又會(huì)有額外的拷貝構(gòu)造過(guò)程消耗內(nèi)存,此時(shí)需要進(jìn)行引用傳遞來(lái)減少拷貝構(gòu)造,通過(guò)std::ref進(jìn)行引用傳遞。如果進(jìn)行值傳遞,之間將定義類(lèi)類(lèi)型的變量傳入即可。
如下代碼:


#include <iostream>
#include <thread>
class Factor{
public:void operator()(std::string &a){std::cout << " value is " << a << std::endl;a = " i am changed";}   
};int main()
{std::string a = "I am a value ";//C++中兼容C的語(yǔ)法,同時(shí)有自己封裝的模板庫(kù)。std::ref用于函數(shù)參數(shù)傳入類(lèi)類(lèi)型的引用std::thread t1(Factor(),std::ref(a));t1.join();std::cout << " from main value is " << a << std::endl;                                                                                                                                                                                                                return 0;
}

編譯g++ -std=c++11 ref.cc -o ref -lpthread
結(jié)果如下
value is I am a value
from main value is i am changed

總結(jié)

以上是生活随笔為你收集整理的C++ 函数参数 值传递与引用传递的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。