真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

函數(shù)的傳值調(diào)用,傳址調(diào)用和引用調(diào)用分析-創(chuàng)新互聯(lián)

函數(shù)的傳值調(diào)用和傳址調(diào)用在C和C++中都是合法的語法,但是引用調(diào)用就只是在C++中合法的。

創(chuàng)新互聯(lián)建站主要從事成都網(wǎng)站制作、成都網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)北塔,十余年網(wǎng)站建設(shè)經(jīng)驗,價格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):028-86922220

1.傳值調(diào)用:

程序:

#include

void swap(int x, int y)

{

int tmp = x;

x = y;

y = tmp;

}

int main(void)

{

int a = 1, b = 2;

printf("a=%d, b=%d\n", a, b);

swap(a, b);

printf("a=%d, b=%d\n", a, b);

system("pause");

return 0;

}

運行結(jié)果:

a=1, b=2

a=1, b=2

請按任意鍵繼續(xù). . .

分析:并沒有完成交換,因為在傳參調(diào)用中,main調(diào)用swap時候,將實參a, b的值分別拷貝給形參x, y,然后a, b就不再和swap有關(guān)了,swap交換的是x, y的值,但是x, y的作用域只在swap中,他們確實完成了交換,但是swap結(jié)束之后,x, y的值也就隨之銷毀了,所以根本不會對行參有任何影響,當然就不會實現(xiàn)實參的交換。

2.傳址調(diào)用

程序:

#include

void swap(int *x, int *y)

{

int tmp = *x;

*x = *y;

*y = tmp;

}

int main(void)

{

int a = 1, b = 2;

printf("a=%d, b=%d\n", a, b);

swap(&a, &b);

printf("a=%d, b=%d\n", a, b);

system("pause");

return 0;

}

運行結(jié)果:

a=1, b=2

a=2, b=1

請按任意鍵繼續(xù). . .

分析:完成了交換,原因是這樣的,傳址調(diào)用實際上還是實參到形參的拷貝,不過這次實參是要交換的兩個數(shù)字的指針(即地址),而不是要交換的兩個數(shù)本身,雖然形參在swap結(jié)束后被銷毀,但是形參是根據(jù)要交換的兩個數(shù)的地址完成交換的,所以對這兩個數(shù)字產(chǎn)生影響,也就完成交換。

3.引用調(diào)用

這個語法在C++里合法,但是在C里面是沒有的

程序1:

#include

void swap(int &x, int &y)

{

int tmp = x;

x = y;

y = tmp;

}

int main(void)

{

int a = 1, b = 2;

printf("a=%d, b=%d\n", a, b);

swap(a, b);

printf("a=%d, b=%d\n", a, b);

system("pause");

return 0;

}

注意:這段代碼如果用c編譯會報錯,因為引用調(diào)用在C里面不合法,要用c++語言進行編譯。

程序2:

#include

using namespace std;

void swap(int &x, int &y)

{

int tmp = x;

x = y;

y = tmp;

}

int main(void)

{

int a = 1, b = 2;

printf("a=%d, b=%d\n", a, b);

swap(a, b);

printf("a=%d, b=%d\n", a, b);

system("pause");

return 0;

}

運行結(jié)果:

a=1, b=2

a=2, b=1

請按任意鍵繼續(xù). . .

分析:可以看到實現(xiàn)了兩個數(shù)字的交換,但是這里的語法和上面的兩種都不一樣,這里并沒有實參到形參的拷貝,用的是同一塊內(nèi)存空間,而是直接將main里面的a, b傳到swap里面,所以當然交換的就是a, b的值。

建議:對于內(nèi)部數(shù)據(jù)類型的輸入?yún)?shù),不要將“值傳遞”的方式改為“const 引用傳遞”。否則既達不到提高效率的目的,又降低了函數(shù)的可理解性。例如void Func(int x) 不應(yīng)該改為void Func(const int &x),只是建議在傳結(jié)構(gòu)體或類對象的時候使用const 參數(shù)。

創(chuàng)新互聯(lián)www.cdcxhl.cn,專業(yè)提供香港、美國云服務(wù)器,動態(tài)BGP最優(yōu)骨干路由自動選擇,持續(xù)穩(wěn)定高效的網(wǎng)絡(luò)助力業(yè)務(wù)部署。公司持有工信部辦法的idc、isp許可證, 機房獨有T級流量清洗系統(tǒng)配攻擊溯源,準確進行流量調(diào)度,確保服務(wù)器高可用性。佳節(jié)活動現(xiàn)已開啟,新人活動云服務(wù)器買多久送多久。


名稱欄目:函數(shù)的傳值調(diào)用,傳址調(diào)用和引用調(diào)用分析-創(chuàng)新互聯(lián)
網(wǎng)站網(wǎng)址:http://weahome.cn/article/poces.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部