明確幾個(gè)問題:函數(shù)只可以返回一個(gè)參數(shù);值傳遞的過程若不用一些特殊符號(hào)如static,其生存周期是在函數(shù)的局部范圍內(nèi),即用完函數(shù)就消失
為崇明等地區(qū)用戶提供了全套網(wǎng)頁(yè)設(shè)計(jì)制作服務(wù),及崇明網(wǎng)站建設(shè)行業(yè)解決方案。主營(yíng)業(yè)務(wù)為成都做網(wǎng)站、網(wǎng)站設(shè)計(jì)、外貿(mào)營(yíng)銷網(wǎng)站建設(shè)、崇明網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠(chéng)的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會(huì)得到認(rèn)可,從而選擇與我們長(zhǎng)期合作。這樣,我們也可以走得更遠(yuǎn)!我們都知道在函數(shù)調(diào)用過程中存在著參數(shù)傳遞的問題。在值傳遞的過程中,我們只是簡(jiǎn)單的把數(shù)值傳遞給了參數(shù),這個(gè)過程大家可以理解成數(shù)學(xué)運(yùn)算中的=,若a=2,b=a,那么b的值的改變肯定是不會(huì)影響a的值,這帶來(lái)了一些問題,比如我們?nèi)绻胍诤瘮?shù)中交換a和b的值,那么a和b的值只在函數(shù)內(nèi)做了局部交換,以簡(jiǎn)單的思考方式:我們將a的值給了a1,a1=a,將b的值給了b1,b1=b,在函數(shù)內(nèi)操作,就是改變a1和b1的值,那么與a和b有關(guān)系嗎,答案是肯定沒有的,那怎么能夠讓a和b扯上關(guān)系呢,這里有兩種方法,一種是利用&引用符,注意這個(gè)是引用符號(hào),不是C語(yǔ)言里的取地址,另一種就是采用指針。
采用引用符&
關(guān)于引用符,我理解的是,MAC-10有一個(gè)名字叫MAC-10,當(dāng)然我們還可以給他起一個(gè)綽號(hào)叫吹風(fēng)機(jī),那么在RUSHB的時(shí)候,我們可以叫隊(duì)友給我們發(fā)一把MAC-10,當(dāng)然還可以讓他給我們發(fā)一把吹風(fēng)機(jī),他都會(huì)理解,這個(gè)引用符也是如此,a=2,那么我們給他取一個(gè)別名 c,讓&c=a,這樣我們?cè)谑褂胏的時(shí)候,a的值也就會(huì)跟著變化啦(注意這個(gè)操作應(yīng)該在函數(shù)傳遞或者是定義的時(shí)候使用)
#includeint main()
{
int a = 2;
int& c = a;
c = 1;
std::cout<< c<<" "<< a;//結(jié)果是1 1
//int a=2,c;
//&c=a;這種方法是錯(cuò)誤的,應(yīng)該在c定義時(shí)就讓&c=a
}
寫交換函數(shù)時(shí),
#includevoid swap(int& x, int& y)
{
int t;
t = x;
x = y;
y = t;
return;
}
int main()
{
int a, b;
std::cin >>a >>b;
std::cout<< "the value "<< a<< "and"<< b<< std::endl;
swap(a, b);
std::cout<< "the value "<< a<< "and"<< b<< std::endl;
}
//2 3
//the value 2and3
//the value 3and2
指針作為函數(shù)參數(shù)
使用指針具體來(lái)說之前我們都是直接的傳入a和b的值進(jìn)而來(lái)解決問題,利用指針就是“曲線救國(guó)”,把a(bǔ)和b的地址作為函數(shù)參數(shù)傳進(jìn)去,因?yàn)槊總€(gè)變量的地址在我們的代碼里面是唯一的,因此我們可以從地址找到變量,進(jìn)而改變他們的值。代碼如下:
關(guān)于什么時(shí)候用&和指針或者值傳遞
說說我自己的理解,因?yàn)樵诤瘮?shù)傳參的過程中,&方式我們可以理解為直接將它本身丟過去,并不會(huì)像值傳遞那樣復(fù)制出來(lái)另一份,因此這種方式本身的速度更快,因?yàn)樗贿M(jìn)行復(fù)制,可以減輕復(fù)制大型對(duì)象所產(chǎn)生的時(shí)間,因此在比如函數(shù)功能是遍歷一個(gè)數(shù)組時(shí)用&方式或者是指針的方式更好;同時(shí)如果函數(shù)內(nèi)我們希望對(duì)傳入的對(duì)象進(jìn)行數(shù)據(jù)上的操作,并能夠直接輻射到主函數(shù)中,使用指針和&方法更好。
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購(gòu),新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧
網(wǎng)頁(yè)名稱:C++引用符&和指針*在函數(shù)中的使用方法和區(qū)別-創(chuàng)新互聯(lián)
標(biāo)題鏈接:http://www.rwnh.cn/article30/copspo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供搜索引擎優(yōu)化、做網(wǎng)站、企業(yè)網(wǎng)站制作、用戶體驗(yàn)、網(wǎng)頁(yè)設(shè)計(jì)公司、企業(yè)建站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容