成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

C++函數傳遞三種方式解讀

開發 后端
C++函數傳遞的方式總共被分為了三種,其中就包括值傳遞,指針傳遞,以及引用傳遞。大家今天可以對這三種方式有一個深刻的了解。

C++編程語言中的函數可以以多種傳遞的方式來實現一些特定功能的實現。我們今天就為大家總結了這些傳遞方式,讓大家能夠對這方面的知識有一個深刻的理解。首先就讓我們一起來看看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;  

 

指針傳遞:

 

  1. void fun(int *x)  
  2. {  
  3. *x += 5; //修改的是指針x指向的內存單元值  
  4. }  
  5. void main(void)  
  6. {  
  7. int y = 0;  
  8. fun(&y);  
  9. cout<<<<\"y = \"<<y<<endl; //y = 5;  

 

 

引用傳遞:

 

  1. void fun(int &x)  
  2. {  
  3. x += 5; //修改的是x引用的對象值 &x = y;  
  4. }  
  5. void main(void)  
  6. {  
  7. int y = 0;  
  8. fun(y);  
  9. cout<<<<\"y = \"<<y<<endl; //y = 5;  

 

看了C++函數傳遞后我們繼續來談“const只能用于修飾輸入參數”的情況。#t#

 

當輸入參數用“值傳遞”方式時,我們不需要加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指向的內存單元,編譯器都將報錯

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

例如:

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

以上就是對C++函數傳遞的三種方式的介紹。

責任編輯:曹凱 來源: 博客園
相關推薦

2010-02-04 10:33:40

C++異常傳遞

2024-04-28 09:40:28

2010-02-02 17:39:31

C++構造函數

2023-11-17 14:10:08

C++函數

2010-02-05 16:46:58

C++ TinyXml

2023-08-02 10:10:00

C#C++

2009-12-03 10:26:24

PHP函數strrev

2012-07-17 09:16:16

SpringSSH

2010-02-01 11:22:09

C++虛函數

2024-08-13 08:25:16

C#外部程序方式

2024-05-27 00:20:00

2009-12-21 13:37:43

WCF消息交換

2015-10-13 15:05:09

BYOD自帶設備移動辦公

2015-09-25 11:08:44

移動辦公BYOD

2024-07-08 09:03:31

2017-01-05 16:19:12

C++正則表達式

2020-11-01 17:10:46

異步事件開發前端

2010-06-13 16:04:14

MySQL三種安裝方式

2011-04-08 11:13:50

CISCO IOS令牌桶雙桶

2010-03-12 17:52:35

Python輸入方式
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: www.夜夜骑 | 亚洲欧美一区二区三区视频 | 欧美成人高清视频 | 欧美激情99 | av免费网址 | 嫩草视频免费 | 亚洲免费在线 | 在线视频a | 欧美一级黄色片免费观看 | 日韩一区二区三区视频在线观看 | 成人在线精品 | 亚洲色图综合 | 日韩精品一区在线 | 国产高清精品一区二区三区 | 欧美福利在线 | 欧美无乱码久久久免费午夜一区 | 成人黄色电影在线观看 | 亚洲一区 中文字幕 | 九九伊人sl水蜜桃色推荐 | 日日摸夜夜添夜夜添精品视频 | 国产免费一区二区三区免费视频 | 免费视频一区二区 | 国产免费a视频 | 天天宗合网| 粉嫩一区二区三区四区公司1 | 国产精品www | 国产免费一区二区 | 欧美在线a | 颜色网站在线观看 | 久久久91| 国产99久久精品 | 国产成人综合在线 | 国产高清一区二区三区 | 三级成人在线 | 欧美日韩久久 | 狠狠久| 日韩中文字幕高清 | 久久久久久国产精品免费免费狐狸 | 91免费入口 | 国产精品一级在线观看 | 视频三区 |