C++中函數(shù)傳遞的方式是什么

本文小編為大家詳細(xì)介紹“C++中函數(shù)傳遞的方式是什么”,內(nèi)容詳細(xì),步驟清晰,細(xì)節(jié)處理妥當(dāng),希望這篇“C++中函數(shù)傳遞的方式是什么”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學(xué)習(xí)新知識吧。

成都網(wǎng)絡(luò)公司-成都網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián)建站10多年經(jīng)驗(yàn)成就非凡,專業(yè)從事網(wǎng)站設(shè)計、網(wǎng)站建設(shè),成都網(wǎng)頁設(shè)計,成都網(wǎng)頁制作,軟文營銷一元廣告等。10多年來已成功提供全面的成都網(wǎng)站建設(shè)方案,打造行業(yè)特色的成都網(wǎng)站建設(shè)案例,建站熱線:18980820575,我們期待您的來電!

值傳遞:

  1. void fun(int x)  

  2. {  

  3. x += 5; //修改的只是y在棧中copy x,x只是y的一個副本,在內(nèi)存中重新開辟的
    一塊臨時空間把y的值送給了x;這樣也增加了程序運(yùn)行的時間,降低了程序的效率。  

  4. }  

  5. void main(void)  

  6. {  

  7. int y = 0;  

  8. fun(y);  

  9. cout<<\"y = \"<<y<<endl; //y = 0;  

指針傳遞:

void fun(int *x)  {  *x += 5; //修改的是指針x指向的內(nèi)存單元值  }  void main(void)  {  int y = 0;  fun(&y);  cout<<<<\"y = \"<<y<<endl; //y = 5;  }

引用傳遞:

void fun(int &x)  {  x += 5; //修改的是x引用的對象值 &x = y;  }  void main(void)  {  int y = 0;  fun(y);  cout<<<<\"y = \"<<y<<endl; //y = 5;  }

看了C++函數(shù)傳遞后我們繼續(xù)來談“const只能用于修飾輸入?yún)?shù)”的情況。

  • C++可變參數(shù)表基本內(nèi)容探討

  • 各個C++內(nèi)存區(qū)域功能對比

  • C++ static不同的應(yīng)用方式

  • C++輸入輸出漢字具體應(yīng)用技巧分享

  • C++地址運(yùn)算符相關(guān)內(nèi)容詳解

當(dāng)輸入?yún)?shù)用“值傳遞”方式時,我們不需要加const修飾,因?yàn)橛弥祩鬟f時,函數(shù)將自動用實(shí)際參數(shù)的拷貝初始化形式參數(shù),當(dāng)在函數(shù)體內(nèi)改變形式參數(shù)時,改變的也只是棧上的拷貝而不是實(shí)際參數(shù)。

但要注意的是,當(dāng)輸入?yún)?shù)為ADT/UDT(用戶自定義類型和抽象數(shù)據(jù)類型)時,應(yīng)該將“值傳遞”改為“const &傳遞”,目的可以提高效率。

例如:

void fun(A a); //效率底。函數(shù)體內(nèi)產(chǎn)生A類型的臨時對象用于復(fù)制參數(shù) a,但是臨時對象的構(gòu)造、復(fù)制、析構(gòu)過程都將消耗時間。

void fun(A const &a); //提高效率。用“引用傳遞”不需要產(chǎn)生臨時對象,省了臨時對象的構(gòu)造、復(fù)制、析構(gòu)過程消耗的時間。但光用引用有可能改變a,所以加const

當(dāng)輸入?yún)?shù)用C++函數(shù)傳遞中的“指針傳遞”方式時,加const修飾可防止意外修改指針指向的內(nèi)存單元,起到保護(hù)作用。

例如:

void funstrcopy(char *strdest,const char *strsrc) //任何改變strsrc指向的內(nèi)存單元,編譯器都將報錯

些時保護(hù)了指針的內(nèi)存單元,也可以保護(hù)指針本身,防止其地址改變。

例如:

void funstrcopy(char *strdest,const char *const strsrc)

讀到這里,這篇“C++中函數(shù)傳遞的方式是什么”文章已經(jīng)介紹完畢,想要掌握這篇文章的知識點(diǎn)還需要大家自己動手實(shí)踐使用過才能領(lǐng)會,如果想了解更多相關(guān)內(nèi)容的文章,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

分享文章:C++中函數(shù)傳遞的方式是什么
分享地址:http://muchs.cn/article18/pdjjdp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供ChatGPT、網(wǎng)站導(dǎo)航虛擬主機(jī)、外貿(mào)網(wǎng)站建設(shè)外貿(mào)建站、微信公眾號

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都seo排名網(wǎng)站優(yōu)化