#include stdio.h??
創(chuàng)新互聯(lián)公司是一家集網(wǎng)站設(shè)計(jì)制作、做網(wǎng)站、網(wǎng)站頁面設(shè)計(jì)、網(wǎng)站優(yōu)化SEO優(yōu)化為一體的專業(yè)網(wǎng)絡(luò)公司,已為成都等多地近百家企業(yè)提供網(wǎng)站建設(shè)服務(wù)。追求良好的瀏覽體驗(yàn),以探求精品塑造與理念升華,設(shè)計(jì)最適合用戶的網(wǎng)站頁面。 合作只是第一步,服務(wù)才是根本,我們始終堅(jiān)持講誠(chéng)信,負(fù)責(zé)任的原則,為您進(jìn)行細(xì)心、貼心、認(rèn)真的服務(wù),與眾多客戶在蓬勃發(fā)展的市場(chǎng)環(huán)境中,互促共生。
void Swap(int a,int b)
{
int tmp = a;
a = b;
b = tmp;
printf("a=%d,b=%d\n",a,b);
}
int main()
{
int a = 5;
int b = 10;
printf("a=%d,b=%d\n",a,b);
Swap(a,b);
printf("a=%d,b=%d\n",a,b);
return 0;
}
擴(kuò)展資料:
形參和實(shí)參的特點(diǎn)
1、形參變量只有在被調(diào)用時(shí)才分配內(nèi)存單元,在調(diào)用結(jié)束時(shí),即刻釋放所分配的內(nèi)存單元。因此,形參只在函數(shù)內(nèi)部有效。函數(shù)調(diào)用結(jié)束返回主調(diào)用函數(shù)后則不能再使用該形參變量。
2、實(shí)參可以是常量、變量、表達(dá)式、函數(shù)等,無論實(shí)參是何種類型的量,在進(jìn)行函數(shù)調(diào)用時(shí),它們都必須有確定的值,以便把這些值傳送給形參。因此應(yīng)預(yù)先用賦值,輸入等辦法使參數(shù)獲得確定值。
3、實(shí)參和形參在數(shù)量上,類型上、順序上應(yīng)嚴(yán)格一致,否則就會(huì)發(fā)生類型不匹配的錯(cuò)誤。
4、在一般傳值調(diào)用的機(jī)制中只能把實(shí)參傳送給形參,而不能把形參的值反向地傳送給實(shí)參。因此在函數(shù)調(diào)用過程中,形參值發(fā)生改變,而實(shí)參中的值不會(huì)變化。而在引用調(diào)用的機(jī)制當(dāng)中是將實(shí)參引用的地址傳遞給了形參,所以任何發(fā)生在形參上的改變實(shí)際上也發(fā)生在實(shí)參變量上。
參考資料:
百度百科-形參
void swap(int *x,int *y) x,y是地址
temp = *x; //temp的值是x地址指向的值
這么理解就明白了。
int a;
int *a2;
a = 5;
a2=a;
*a2 = 6;
運(yùn)行到這里a就是等于6,有沒有明白呢。
在
huan(int
*p1,int
*p2)這個(gè)函數(shù)中,交換的只是兩個(gè)指針的指向,但是函數(shù)的結(jié)束、返回,這兩個(gè)指針本身就消失了(它們的值并不會(huì)傳回到main()函數(shù)中)所以,最后的結(jié)果沒有交換。
如果要起到交換的作用,這個(gè)函數(shù)應(yīng)該這樣寫:
void
huan(int
*p1,int
*p2)
{
int
t;
t=*p1;
*p1=*p2;
*p2=t;
}
int swap(int *a,int *b)//a與b分別復(fù)制主函數(shù)x與y的值,即a與x的指向相同,b與y的指向相同
{
int *t;
{t=a;a=b;b=t;}//通過交換,a和y的指向相同,b與x的指向相同,但是,x與y沒有改變?cè)瓉碇赶?這樣函數(shù)swap結(jié)束,a與b消失,輸出結(jié)果不變
}
換成
int t;
{t=*a;*a=*b;*b=t;}//將改變x和y指向的地址的值,達(dá)到交換目的