不知道你要交換的兩個(gè)變量類型,所以這里以整型數(shù)據(jù)交換為例,以下swap函數(shù)實(shí)現(xiàn)了交換兩個(gè)整型變量值的功能:
成都創(chuàng)新互聯(lián)公司是一家集網(wǎng)站建設(shè),阿克蘇企業(yè)網(wǎng)站建設(shè),阿克蘇品牌網(wǎng)站建設(shè),網(wǎng)站定制,阿克蘇網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營銷,網(wǎng)絡(luò)優(yōu)化,阿克蘇網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競(jìng)爭(zhēng)力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶成長自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(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é)果如下:
swap函數(shù)一般是一個(gè)程序員自定義函數(shù)。通常是實(shí)現(xiàn)兩個(gè)變量數(shù)值的交換。
1.swap1(x,y);
printf("swap1: x:%d,y:%d\n",x,y);//形參傳值,不能交換,實(shí)際傳過去是拷貝的一份,沒改變主函數(shù)中x,y。
2.swap2(x,y);
printf("swap2: x:%d,y:%d\n",x,y);//不能交換,函數(shù)中只是地址交換了下,地址指向的內(nèi)容沒有交換。
3.swap3(x,y);
printf("swap3: x:%d,y:%d\n",x,y);//能交換,地址指向的內(nèi)容進(jìn)行了交換。
擴(kuò)展資料
C語言是一門通用計(jì)算機(jī)編程語言,廣泛應(yīng)用于底層開發(fā)。
C語言的設(shè)計(jì)目標(biāo)是提供一種能以簡易的方式編譯、處理低級(jí)存儲(chǔ)器、產(chǎn)生少量的機(jī)器碼以及不需要任何運(yùn)行環(huán)境支持便能運(yùn)行的編程語言。
參考資料C語言_百度百科
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、通過使用臨時(shí)變量實(shí)現(xiàn)交換。
void swap1(int x,int y)
{
int temp;
temp=x;
x=y;
y=temp;
}
擴(kuò)展資料
C語言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);
}
#include stdio.h
void swap(int *p, int *q);//用傳地址的方法交換
void main()
{
int i, j;
scanf("%d%d", i, j);//從鍵盤輸入兩個(gè)交換的數(shù)
swap(i, j);//傳入i,j的地址
printf("i = %d, j = %d\n", i, j);//輸出交換后的兩個(gè)值
}
void swap(int *p, int *q)
{
int temp;//定義臨時(shí)變量 存放中間值
temp = *p;
*p = *q;
*q = temp;
}
注意:不能直接寫void swap(int i, int j);
因?yàn)槟侵皇桥R時(shí)變量,函數(shù)調(diào)用完后,便釋放空間,兩個(gè)值并沒有交換。