不知道你要交換的兩個(gè)變量類型,所以這里以整型數(shù)據(jù)交換為例,以下swap函數(shù)實(shí)現(xiàn)了交換兩個(gè)整型變量值的功能:
公司主營(yíng)業(yè)務(wù):成都做網(wǎng)站、網(wǎng)站建設(shè)、外貿(mào)營(yíng)銷網(wǎng)站建設(shè)、移動(dòng)網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實(shí)現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競(jìng)爭(zhēng)能力。成都創(chuàng)新互聯(lián)公司是一支青春激揚(yáng)、勤奮敬業(yè)、活力青春激揚(yáng)、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊(duì)。公司秉承以“開放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對(duì)我們的高要求,感謝他們從不同領(lǐng)域給我們帶來(lái)的挑戰(zhàn),讓我們激情的團(tuán)隊(duì)有機(jī)會(huì)用頭腦與智慧不斷的給客戶帶來(lái)驚喜。成都創(chuàng)新互聯(lián)公司推出達(dá)川免費(fèi)做網(wǎng)站回饋大家。
#include?stdio.h
//?交換給定指針指向整型變量的值。
//?參數(shù):
// a?-?指向第一個(gè)變量的指針
// b?-?指向第二個(gè)變量的指針
void?swap(int*?a,?int?*?b);
int?main(int?argc,?int?argv)
{
int?a?=?3,?b?=?5;
printf_s("交換前:a?=?%d,?b?=?%d\n",?a,?b);
swap(a,?b);
printf_s("交換后:a?=?%d,?b?=?%d\n",?a,?b);
return?0;
}
//?交換給定指針指向整型變量的值。
//?參數(shù):
// a?-?指向第一個(gè)變量的指針
// b?-?指向第二個(gè)變量的指針
void?swap(int*?a,?int*?b)
{
//?聲明一個(gè)臨時(shí)變量,保存第一個(gè)指針指向變量
//?的值。
//?其中?*a?是取出?a?指針指向變量的值
int?temp?=?*a;
//?將?b?指針指向的值賦值給?a?指針指向變量
(*a)?=?(*b);
//?將臨時(shí)變量?temp?中保存的?a?指針指向變量的值賦值給
//?b?指針指向的變量。
(*b)?=?temp;
}
以上代碼運(yùn)行結(jié)果如下:
以下代碼實(shí)現(xiàn)了使用宏定義作為模板,聲明不同類型交換函數(shù)的功能,以下以聲明double和float為例:
#include?stdio.h?
//?聲明一個(gè)函數(shù)代碼模板,邏輯參考?swap(int*?a,?int*?b)
#define?DEF_SWAP_FUNC(Type)?void?swap_##Type(Type*?a,?Type*?b)?\
{?\
Type?temp?=?(*a);?\
(*a)?=?(*b);?\
(*b)?=?temp;?\
}?
//?使用模板聲明并實(shí)現(xiàn)一個(gè)?double?類型變量交換函數(shù),函數(shù)名為?swap_double
DEF_SWAP_FUNC(double)
//?使用模板聲明并實(shí)現(xiàn)一個(gè)?float?類型變量交換函數(shù),函數(shù)名為?swap_float
DEF_SWAP_FUNC(float)
int?main(int?argc,?int?argv)
{
//?double?類型數(shù)據(jù)交換
double?da?=?5.6,?db?=?3.5;
printf_s("double?交換前:da?=?%lf,?db?=?%lf\n",?da,?db);
swap_double(da,?db);
printf_s("double?交換后:da?=?%lf,?db?=?%lf\n",?da,?db);
//?float?類型數(shù)據(jù)交換
float?fa?=?3.4,?fb?=?6.8;
printf_s("float?交換前:fa?=?%f,?fb?=?%f\n",?fa,?fb);
swap_float(fa,?fb);
printf_s("float?交換前:fa?=?%f,?fb?=?%f\n",?fa,?fb);
return?0;
}
運(yùn)行結(jié)果如下:
/*
編寫c語(yǔ)言程序,實(shí)現(xiàn)交換兩個(gè)變量值的操作。
要求:使用形參為指針的函數(shù)swap完成交換功能。
主函數(shù)中,使用整型指針從鍵盤輸入兩個(gè)整數(shù),通過(guò)調(diào)用swap完成交換
輸出交換前后的變量值進(jìn)行比較。
輸入輸出示例:
Input two number:3 4
Before change:a=3,b=4
After change:a=4,b=3
*/
//File: swap.c
#include stdio.h
#include stdlib.h
void swap(int *a, int *b)
{
int tmp;
tmp=*a;
*a=*b;
*b=tmp;
}
int main()
{
int *a=NULL,*b=NULL;
a=(int *)calloc(1,sizeof(int));
if(!a)
{
perror("calloc a err.");
}
b=(int *)calloc(1,sizeof(int));
if(!b)
{
perror("calloc b err.");
}
printf("Input two number:");
scanf("%d %d",a,b);
printf("Before change:a=%d,b=%d\n",*a,*b);
swap(a,b);
printf("After change:a=%d,b=%d\n",*a,*b);
return 0;
}
C:\myprogcc -g -Wall swap.c -o swap
C:\myproswap
Input two number:3 4
Before change:a=3,b=4
After change:a=4,b=3
C:\mypro
程序已調(diào)好,直接運(yùn)行即可。
swap函數(shù)一般是一個(gè)程序員自定義函數(shù),是實(shí)現(xiàn)兩個(gè)變量數(shù)值的交換。
1、比如:
int a = 2;
int b =3;
swap(a,b); //一般用到變量數(shù)值交換,交換后a=3 b = 2;
2、通過(guò)使用臨時(shí)變量實(shí)現(xiàn)交換。
void swap1(int x,int y)
{
int temp;
temp=x;
x=y;
y=temp;
}
擴(kuò)展資料
C語(yǔ)言swap函數(shù)的使用
#includestdio.h
void swap(int *pa,int *pb)
{
int temp;
temp=*pa,*pa=*pb,*pb=temp;
}
void main()
{
int a=10,b=20;
swap(a,b);//傳遞的是實(shí)參變量a,b的地址
printf("a=%d,b=%d\n",a,b);
}
要交換任意變量 那么就只能通過(guò)指針來(lái)進(jìn)行
不考慮變量類型,而直接交換值。
需要三個(gè)參數(shù),兩個(gè)變量地址,以及變量所占的空間。
賦值可以用memcpy
代碼如下:
void?super_swap(void?*?a,?void?*b,?int?size)
{
void?*p?=?malloc(size);
memcpy(p,?a,?size);
memcpy(a,b,size);
memcpy(b,p,size);
free(p);
}
#include?stdio.h
void?swap_1(int*a,int*b)//方法一,定義臨時(shí)變量
{
int?temp=*a;
*a=*b;
*b=temp;
}
void?swap_2(int*a,int*b)//方法二,利用加減法運(yùn)算
{
*a=*a+*b;
*b=*a-*b;
*a=*a-*b;
}
void?swap_3(int*a,int*b)//方法三,利用位運(yùn)算
{
*a=*a^*b;
*b=*a^*b;
*a=*a^*b;
}
int?main()
{
int?x,y;
scanf("%d%d",x,y);
printf("x=%d,y=%d\n",x,y);
swap_1(x,y);//或swap_2(x,y);或swap_3(x,y);
printf("x=%d,y=%d\n",x,y);
return?0;
}
void
swap(int
*a,int*
b)
{
int
temp=0;
temp=*a;
*a=*b;
*b=temp;
}
因?yàn)槭侵羔?,只要更換指針內(nèi)的內(nèi)容就可以了;
還有一種是
換指針,就設(shè)a指向沒(méi)存A,b指向內(nèi)存B,交換后把b指向內(nèi)存A,把a(bǔ)指向內(nèi)存B
void
swap(int
*a,int*
b)
{
int
*temp;
temp=a;
a=b;
b=temp;
}
名稱欄目:c語(yǔ)言寫交換變量的函數(shù),c語(yǔ)言交換兩個(gè)變量
網(wǎng)頁(yè)鏈接:http://aaarwkj.com/article28/dsshdcp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供自適應(yīng)網(wǎng)站、網(wǎng)站內(nèi)鏈、、品牌網(wǎng)站建設(shè)、關(guān)鍵詞優(yōu)化、網(wǎng)站維護(hù)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)