這是譚浩強(qiáng)那本書(shū)上一個(gè)很典型的程序,看看書(shū)就能改了。
10年積累的成都網(wǎng)站建設(shè)、網(wǎng)站制作經(jīng)驗(yàn),可以快速應(yīng)對(duì)客戶(hù)對(duì)網(wǎng)站的新想法和需求。提供各種問(wèn)題對(duì)應(yīng)的解決方案。讓選擇我們的客戶(hù)得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識(shí)你,你也不認(rèn)識(shí)我。但先建設(shè)網(wǎng)站后付款的網(wǎng)站建設(shè)流程,更有睢寧縣免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。
給你個(gè)答案參考一下:
#includestdio.h
void exchange(int *x,int *y);//此處將函數(shù)返回類(lèi)型修改為void型,因?yàn)楹瘮?shù)本來(lái)就沒(méi)返回值。參數(shù)全部改為指針型。
int main(void)
{
int a,b;
printf("請(qǐng)輸入a,b\n");
scanf("%d%d",a,b);
exchange(a,b);//此處參數(shù)變?yōu)槿〉刂穉,b
printf("a=%d,b=%d",a,b);
return 0;
}
void exchange(int *x,int *y)//根據(jù)函數(shù)聲明一并修改
{
int *i;//所要操作的數(shù)據(jù)都是指針,所以這里緩存也要變?yōu)橹羔槨?/p>
i=x;
x=y;
y=i;
}//本來(lái)就沒(méi)返回值為啥原題要聲明成返回值為int型的函數(shù)呢?
形參是一個(gè)變量,是在引用的函數(shù)中的變量
實(shí)參也是一個(gè)變量.是在主函數(shù)中的變量.
兩個(gè)變量的使用范圍不同.
形參只在子函數(shù)中使用,實(shí)參可以在主函數(shù)中使用.
上面,實(shí)參寫(xiě)成100,是說(shuō),在形參用100代進(jìn)去.
而形參只能是一個(gè)變量,用來(lái)吸收實(shí)參傳遞進(jìn)來(lái)的值,以輸出結(jié)果.
主要有兩種:(1)值傳遞:在函數(shù)調(diào)用時(shí),將實(shí)參的值復(fù)制一份傳遞到調(diào)用函數(shù)中,這樣,如果在調(diào)用函數(shù)中修改了參數(shù)的值,也不會(huì)影響到實(shí)參的值。(2)引用傳遞:與(1)相反,即會(huì)影響實(shí)參的值。如何區(qū)分它們呢?實(shí)際上,通常在定義函數(shù)時(shí),如果參數(shù)為數(shù)組、指針或引用類(lèi)型時(shí),函數(shù)采用引用傳遞,否則采用值傳遞。
void?fun(int?*a,?int?*b)
{
int?*c;
c=a;a=b;b=c;
}
因?yàn)楹瘮?shù)中,形參a,b中保存的都是實(shí)參的地址值,c=a;a=b;b=c;這行代碼,只是把形參a,b的地址值進(jìn)行了互換,對(duì)調(diào)用函數(shù)的實(shí)參所保存的結(jié)果是沒(méi)有任何影響的。如果換成如下代碼:
void?fun(int?*a,?int?*b)
{
int?c;
c=*a;*a=*b;*b=c;
}
互換的是指針?biāo)缚臻g的值,即互換了調(diào)用函數(shù)的實(shí)參所保存的數(shù)值