#include
創(chuàng)新互聯(lián)建站專業(yè)為企業(yè)提供濱海新區(qū)網(wǎng)站建設(shè)、濱海新區(qū)做網(wǎng)站、濱海新區(qū)網(wǎng)站設(shè)計(jì)、濱海新區(qū)網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)與制作、濱海新區(qū)企業(yè)網(wǎng)站模板建站服務(wù),10余年濱海新區(qū)做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。
stdio.h
void
change(int
*a,int
*b){
int
m;
//定義一個(gè)臨時(shí)變量
m
=
*a;
//把a(bǔ)指向的值放到m中
*a
=
*b;
//把b指向的值放到a指向的內(nèi)存中
*b
=
m;
//把m中的值放到b指向的空間中,函數(shù)調(diào)用結(jié)束時(shí)m的生成周期也完了,就釋放掉了
}
int
main(){
int
i
=
1;
int
j
=
2;
change(i
,j);
//函數(shù)調(diào)用
printf("%d,%d\n",i,j);
return
0;
}
#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);}
擴(kuò)展資料:
C語(yǔ)言是一門通用計(jì)算機(jī)編程語(yǔ)言,廣泛應(yīng)用于底層開(kāi)發(fā)。C語(yǔ)言的設(shè)計(jì)目標(biāo)是提供一種能以簡(jiǎn)易的方式編譯、處理低級(jí)存儲(chǔ)器、產(chǎn)生少量的機(jī)器碼以及不需要任何運(yùn)行環(huán)境支持便能運(yùn)行的編程語(yǔ)言。
盡管C語(yǔ)言提供了許多低級(jí)處理的功能,但仍然保持著良好跨平臺(tái)的特性,以一個(gè)標(biāo)準(zhǔn)規(guī)格寫出的C語(yǔ)言程序可在許多電腦平臺(tái)上進(jìn)行編譯,甚至包含一些嵌入式處理器(單片機(jī)或稱MCU)以及超級(jí)電腦等作業(yè)平臺(tái)。
二十世紀(jì)八十年代,為了避免各開(kāi)發(fā)廠商用的C語(yǔ)言語(yǔ)法產(chǎn)生差異,由美國(guó)國(guó)家標(biāo)準(zhǔn)局為C語(yǔ)言制定了一套完整的美國(guó)國(guó)家標(biāo)準(zhǔn)語(yǔ)法,稱為ANSI C,作為C語(yǔ)言最初的標(biāo)準(zhǔn)。目前2011年12月8日,國(guó)際標(biāo)準(zhǔn)化組織(ISO)和國(guó)際電工委員會(huì)(IEC)發(fā)布的C11標(biāo)準(zhǔn)是C語(yǔ)言的第三個(gè)官方標(biāo)準(zhǔn),也是C語(yǔ)言的最新標(biāo)準(zhǔn),該標(biāo)準(zhǔn)更好的支持了漢字函數(shù)名和漢字標(biāo)識(shí)符,一定程度上實(shí)現(xiàn)了漢字編程。
C語(yǔ)言是一門面向過(guò)程的計(jì)算機(jī)編程語(yǔ)言,與C++,Java等面向?qū)ο蟮木幊陶Z(yǔ)言有所不同。其編譯器主要有Clang、GCC、WIN-TC、SUBLIME、MSVC、Turbo C等。
參考資料:百度百科-C語(yǔ)言
因?yàn)関oid
gsd(int
a,int
b)中的a和b在調(diào)用時(shí)用實(shí)參的值進(jìn)行拷貝,在函數(shù)中交換的只是拷貝過(guò)來(lái)的副本,所以原來(lái)的實(shí)參值并沒(méi)有發(fā)生交換操作。而在void
gsd(int
a,int
b)中int
類型使a和b的性質(zhì)發(fā)生了變量,它們是“引用變量”,調(diào)用時(shí)它們就成了實(shí)參的“別名”——就是說(shuō)在函數(shù)中操作的是實(shí)參本身,所以結(jié)果實(shí)參發(fā)生了交換變化——int
等類型是C++引入的新類型,C是沒(méi)有的。要搞清楚的是int
是“整型引用”,并不是指針;整型指針是int
*。建議你不要用“鄙視”這樣的字眼,誰(shuí)答得不好你大可不理會(huì);這里沒(méi)有什么都明白的人,都明白的人不到這里來(lái)!不明白可續(xù)問(wèn)……
樓上的這個(gè)
a
=
a+b;
b
=
a-b;
a
=
a-b;
是個(gè)方法,是符合我們數(shù)學(xué)思維的方法,也是最初接觸C語(yǔ)言的人可能想到的方法。
但是這樣編程很不直觀,不如t=a;a=b;b=t;來(lái)得快。
似乎在C++中有swap(a,
b)模板函數(shù),直接實(shí)現(xiàn)a,b交換。
想玩高級(jí)一點(diǎn)的話,可采用“換標(biāo)不換值”的方法,用數(shù)組元素作為數(shù)組的下標(biāo),這種方法換邏輯不換存儲(chǔ)。
#include
void
main()
{
int
a=10,b=20;
int
array1[2]
=
{10,20};
//存a、b值
int
array2[2]
=
{0,1};
//存下標(biāo)
b
=
array1[array2[0]];
a
=
array1[array2[1]];
printf("a=%d,
b=%d\n",a,b);
}
這個(gè)方法在對(duì)結(jié)構(gòu)體數(shù)組值交換中非常好用!因?yàn)榻Y(jié)構(gòu)體數(shù)組一般每個(gè)成員都有很多個(gè)值,如:
struct
student
{
int
num;
double
score;
char
name[20];
}stu[5]={{1,98,"ziguowen"},{2,88,"dongda"},{3,78,"haha"}};
//交換stu[0]和stu[1],需要
int
n;
double
s;
char
n[20];
n
=
stu[0].num;
stu[0].num
=
stu[1].num;
stu[1].num
=
n;
s
=
stu[0].score;
stu[0].score
=
stu[1].score;
stu[1].score
=
s;
strcpy(n,
stu[0].name);
strcpy(stu[0].name,
stu[1].name);
strcpy(stu[0].name,s);
//而用下標(biāo)的話,一個(gè)賦值語(yǔ)句即可,直接交換stu[0]
和
stu[1]
下標(biāo)后全部交換!
文章標(biāo)題:c語(yǔ)言中函數(shù)值交換 c語(yǔ)言怎么交換兩個(gè)變量的值
文章URL:http://jinyejixie.com/article2/doseeoc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制網(wǎng)站、網(wǎng)站排名、用戶體驗(yàn)、外貿(mào)網(wǎng)站建設(shè)、網(wǎng)站制作、電子商務(wù)
聲明:本網(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)