因?yàn)樵趕wap函數(shù)中,a b是x y的數(shù)據(jù)復(fù)制品,其變化與X y本身無(wú)關(guān),如果要交換,需要傳遞x y的地址到子函數(shù)中,進(jìn)行交換!
創(chuàng)新互聯(lián)公司是一家專注于成都網(wǎng)站制作、成都網(wǎng)站建設(shè)與策劃設(shè)計(jì),黃平網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)公司做網(wǎng)站,專注于網(wǎng)站建設(shè)十載,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:黃平等地區(qū)。黃平做網(wǎng)站價(jià)格咨詢:13518219792
1 #include stdio.h
2 void swap(int *a ,int *b )
3 {
4
5 int temp;
6 temp=*a;
7 *a=*b;
8 *b=temp;
9 }
10 int main()
11 {
12 int x=3;
13 int y=4;
14 swap(x, y);
15 printf("%d%d",x,y);
16 }
你交換的只是swap函數(shù)內(nèi)的局部變量n,m值,應(yīng)該改成這樣
#includestdio.h
void?swap?(int?*n,int?*m)?
{
int?temp;
temp=*n;
*n=*m;
*m=temp;
}
void?main()
{
int?a=10,b=20;
swap(a,b);
printf("a=%d,b=%d\n",a,b);
}
注意函數(shù)形參的傳值和傳地址的區(qū)別
C語(yǔ)言中是可以用函數(shù)互換兩個(gè)值的。
方法如下:
#include"stdio.h"
int swap(int *a,int *b)
{
int temp;
temp=*a;
*a=*b;
*b=temp;
}
main()
{
int x,y;
printf("請(qǐng)輸入x與y的值,用空格隔開(kāi)\n");
scanf("%d %d",x,y);
printf("x=%d,y=%d\n",x,y);
swap(x,y);
printf("交換后\nx=%d,y=%d\n",x,y);
}
因?yàn)樵诤瘮?shù)中的參數(shù),并不是調(diào)用者的變量,而是臨時(shí)申請(qǐng)的變量a和b存放main函數(shù)中變量a和b的值,并在函數(shù)中用來(lái)計(jì)算,在fun中給a和b賦值都是在操作這兩個(gè)臨時(shí)申請(qǐng)的變量,函數(shù)返回后,這兩個(gè)變量被舍棄,函數(shù)調(diào)用也沒(méi)有將這兩個(gè)臨時(shí)變量的值返回給main函數(shù)中調(diào)用使用的參數(shù)功能。
所以,在函數(shù)中要操作調(diào)用者申請(qǐng)的變量,需要給出它們的指針,函數(shù)中用指針來(lái)找到這些變量的位置和內(nèi)容。