解答:
創(chuàng)新互聯(lián)是工信部頒發(fā)資質(zhì)IDC服務(wù)器商,為用戶提供優(yōu)質(zhì)的成都移動機(jī)房托管服務(wù)
1.??? 注意形式參數(shù)和實(shí)際參數(shù)的區(qū)別,主函數(shù)中的x,y是實(shí)際參數(shù),swap函數(shù)中的a,b是形式參數(shù)。他們各有自己的存儲空間,互不干擾。
2.??? 在程序適當(dāng)位置加上輸出地址的語句,即可看出為什么回到主程序后,x,y的值為什么不交換。
為了更形象,可以用圖表示它們的關(guān)系:
可見,交換的只是swap函數(shù)中的a,b值,對主函數(shù)中的a,b值沒有影響。
3. ? ?修改的方法,將swap的交換變成值的交換。
C語言中的任何函數(shù)形參都是值傳遞。所謂引用傳遞,不過是指針的值傳遞而已。
你的函數(shù)做的工作只是交換函數(shù)中的兩個臨時變量a和b的值,結(jié)果不會影響到外部的實(shí)參pa和pb。如果想要交換兩個指針的值,你的形參應(yīng)該為兩個二級指針。
void Swap(intx,inty)
{
int temp=0;
temp=x;
x=y;
y=temp;
}
int main()
{
int a=1;
int b=2;
Swap(a,b);
coutlt;lt;"a="lt;lt;alt;lt;endl;
coutlt;lt;"b="lt;lt;blt;lt;endl;
system("pause");
return 0;
}
運(yùn)行結(jié)果:
擴(kuò)展資料:
用指針交換:
void Swap(int*x,int*y)
{
int temp=0;
temp=*x;
*x=*y;
*y=temp;
}
int main()
{
int x=1;
int y=2;
Swap(x,y);
printf("x=%d,y=%d\n",x,y);
system("pause");
return 0;
}
運(yùn)行結(jié)果:
X=2;Y=1
當(dāng)前名稱:c語言交換的子函數(shù) c語言函數(shù)交換兩個數(shù)的值
鏈接分享:http://sd-ha.com/article10/dojssdo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App開發(fā)、靜態(tài)網(wǎng)站、建站公司、定制網(wǎng)站、網(wǎng)站排名、動態(tài)網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)