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

C++函數(shù)傳遞三種方式解讀

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

C++編程語(yǔ)言中的函數(shù)可以以多種傳遞的方式來(lái)實(shí)現(xiàn)一些特定功能的實(shí)現(xiàn)。我們今天就為大家總結(jié)了這些傳遞方式,讓大家能夠?qū)@方面的知識(shí)有一個(gè)深刻的理解。首先就讓我們一起來(lái)看看C++函數(shù)傳遞的相關(guān)方式吧、

C++函數(shù)傳遞的方式總共有三種,分別為:值傳遞、指針傳遞和引用傳遞。

值傳遞:

 

  1. void fun(int x)  
  2. {  
  3. x += 5; //修改的只是y在棧中copy x,x只是y的一個(gè)副本,在內(nèi)存中重新開辟的
    一塊臨時(shí)空間把y的值送給了x;這樣也增加了程序運(yùn)行的時(shí)間,降低了程序的效率。  
  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指向的內(nèi)存單元值  
  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引用的對(duì)象值 &x = y;  
  4. }  
  5. void main(void)  
  6. {  
  7. int y = 0;  
  8. fun(y);  
  9. cout<<<<\"y = \"<<y<<endl; //y = 5;  

 

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

 

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

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

例如:

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

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

 

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

例如:

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

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

例如:

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

以上就是對(duì)C++函數(shù)傳遞的三種方式的介紹。

責(zé)任編輯:曹凱 來(lái)源: 博客園
相關(guān)推薦

2010-02-04 10:33:40

C++異常傳遞

2024-04-28 09:40:28

2010-02-02 17:39:31

C++構(gòu)造函數(shù)

2023-11-17 14:10:08

C++函數(shù)

2010-02-05 16:46:58

C++ TinyXml

2023-08-02 10:10:00

C#C++

2009-12-03 10:26:24

PHP函數(shù)strrev

2012-07-17 09:16:16

SpringSSH

2010-02-01 11:22:09

C++虛函數(shù)

2024-08-13 08:25:16

C#外部程序方式

2024-05-27 00:20:00

2009-12-21 13:37:43

WCF消息交換

2015-09-25 11:08:44

移動(dòng)辦公BYOD

2015-10-13 15:05:09

BYOD自帶設(shè)備移動(dòng)辦公

2024-07-08 09:03:31

2017-01-05 16:19:12

C++正則表達(dá)式

2020-11-01 17:10:46

異步事件開發(fā)前端

2011-04-08 11:13:50

CISCO IOS令牌桶雙桶

2010-06-13 16:04:14

MySQL三種安裝方式

2009-07-03 18:32:18

JSP頁(yè)面跳轉(zhuǎn)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 国产视频久久久 | 精品久久1| 日韩成人在线网址 | 韩国成人在线视频 | 精品粉嫩aⅴ一区二区三区四区 | 欧美日韩成人在线 | 大学生a级毛片免费视频 | 亚洲第一免费播放区 | 久久精品欧美一区二区三区不卡 | 在线观看中文字幕视频 | 欧美国产日韩在线观看 | 亚洲视频 欧美视频 | 夜夜爽99久久国产综合精品女不卡 | 亚洲伊人久久综合 | 日本不卡在线观看 | 国产美女在线免费观看 | 欧美黄色片 | 国产区一区 | 午夜影院在线观看 | 成人av免费| 久久久久久久国产 | 国产区一区二区三区 | 久久精品久久久 | 久久综合狠狠综合久久综合88 | 成人在线精品 | 日本成年免费网站 | 亚洲精品一区二区三区在线 | 99pao成人国产永久免费视频 | 久久久久黑人 | 国产精品国产三级国产a | 狠狠色综合欧美激情 | 欧美日韩亚洲在线 | 国产97人人超碰caoprom | 一二区电影 | 国产丝袜一区二区三区免费视频 | 国产一级免费在线观看 | 国产亚洲精品综合一区 | 婷婷久久一区 | 国产人免费人成免费视频 | 国产在线精品一区二区 | 亚洲天堂影院 |