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

創(chuàng)新互聯(lián)服務(wù)項(xiàng)目包括東蘭網(wǎng)站建設(shè)、東蘭網(wǎng)站制作、東蘭網(wǎng)頁(yè)制作以及東蘭網(wǎng)絡(luò)營(yíng)銷策劃等。多年來(lái),我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢(shì)、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,東蘭網(wǎng)站推廣取得了明顯的社會(huì)效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到東蘭省份的部分城市,未來(lái)相信會(huì)繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!
C++函數(shù)傳遞的方式總共有三種,分別為:值傳遞、指針傳遞和引用傳遞。
值傳遞:
- void fun(int x)
- {
- x += 5; //修改的只是y在棧中copy x,x只是y的一個(gè)副本,在內(nèi)存中重新開辟的
一塊臨時(shí)空間把y的值送給了x;這樣也增加了程序運(yùn)行的時(shí)間,降低了程序的效率。- }
- void main(void)
- {
- int y = 0;
- fun(y);
- cout<<\"y = \"<
- }
指針傳遞:
- void fun(int *x)
- {
- *x += 5; //修改的是指針x指向的內(nèi)存單元值
- }
- void main(void)
- {
- int y = 0;
- fun(&y);
- cout<<<<\"y = \"<
- }
引用傳遞:
- void fun(int &x)
- {
- x += 5; //修改的是x引用的對(duì)象值 &x = y;
- }
- void main(void)
- {
- int y = 0;
- fun(y);
- cout<<<<\"y = \"<
- }
看了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)過程都將消耗時(shí)間。
void fun(A const &a); //提高效率。用“引用傳遞”不需要產(chǎn)生臨時(shí)對(duì)象,省了臨時(shí)對(duì)象的構(gòu)造、復(fù)制、析構(gòu)過程消耗的時(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ù)指針本身,防止其地址改變。
例如:
- void funstrcopy(char *strdest,const char *const strsrc)
以上就是對(duì)C++函數(shù)傳遞的三種方式的介紹。
標(biāo)題名稱:C++函數(shù)傳遞三種方式解讀
文章分享:http://m.fisionsoft.com.cn/article/copidph.html


咨詢
建站咨詢
