91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C++中函數傳遞的方式是什么

發布時間:2022-04-14 11:11:49 來源:億速云 閱讀:204 作者:iii 欄目:編程語言

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

值傳遞:

  1. void fun(int x)  

  2. {  

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

  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指向的內存單元值  }  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++函數傳遞后我們繼續來談“const只能用于修飾輸入參數”的情況。

  • C++可變參數表基本內容探討

  • 各個C++內存區域功能對比

  • C++ static不同的應用方式

  • C++輸入輸出漢字具體應用技巧分享

  • C++地址運算符相關內容詳解

當輸入參數用“值傳遞”方式時,我們不需要加const修飾,因為用值傳遞時,函數將自動用實際參數的拷貝初始化形式參數,當在函數體內改變形式參數時,改變的也只是棧上的拷貝而不是實際參數。

但要注意的是,當輸入參數為ADT/UDT(用戶自定義類型和抽象數據類型)時,應該將“值傳遞”改為“const &傳遞”,目的可以提高效率。

例如:

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

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

當輸入參數用C++函數傳遞中的“指針傳遞”方式時,加const修飾可防止意外修改指針指向的內存單元,起到保護作用。

例如:

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

些時保護了指針的內存單元,也可以保護指針本身,防止其地址改變。

例如:

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

讀到這里,這篇“C++中函數傳遞的方式是什么”文章已經介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領會,如果想了解更多相關內容的文章,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

c++
AI

海门市| 大石桥市| 卓资县| 运城市| 宽城| 海宁市| 东丰县| 黄梅县| 嵊泗县| 旌德县| 当阳市| 金溪县| 揭西县| 安丘市| 绥阳县| 罗田县| 砀山县| 抚顺市| 西藏| 京山县| 辽源市| 白城市| 石林| 沙坪坝区| 安陆市| 镇沅| 吉首市| 澳门| 凉山| 苍梧县| 伊吾县| 龙川县| 关岭| 隆林| 沧源| 社会| 门头沟区| 白山市| 滕州市| 庆云县| 宿迁市|