先給出錯(cuò)誤示范
#includevoid swap(int a,int b)
{
int temp=a;
a=b;
b=temp;
}
int main()
{
int a,b;
int temp;
a=1;
b=2;
printf("a=%d b=%d\n",a,b);
swap(a,b);
printf("a=%d b=%d",a,b);
return 0;
}
大多初學(xué)者使用時(shí)都會(huì)犯這樣的錯(cuò)誤,那么為什么輸出來的兩次中a,b的值并沒有發(fā)生交換呢
這里是因?yàn)槿缟系慕粨Q我們只改變了在swap函數(shù)里的值,也就是只改變了形參,待其回到main即會(huì)復(fù)原,所以我們需要用指針把兩個(gè)int的地址傳過去,如下
#includevoid swap(int *a,int *b)
{
int temp=*a;
*a=*b;
*b=temp;
}
int main()
{
int a,b;
int temp;
a=1;
b=2;
printf("a=%d b=%d\n",a,b);
swap(&a,&b);
printf("a=%d b=%d",a,b);
return 0;
}
如果不使用指針,我們也可以把輸出放在swap函數(shù)內(nèi)部,如下:
#includevoid swap(int a,int b)
{
int temp=a;
a=b;
b=temp;
printf("a=%d b=%d",a,b);//改變后
}
int main()
{
int a,b;
int temp;
a=1;
b=2;
printf("a=%d b=%d\n",a,b);//改變前
swap(a,b);
return 0;
}
以上兩種方法即可幫助我們成功交換兩個(gè)值
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購(gòu),新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧