C語(yǔ)言.定義一個(gè)函數(shù)實(shí)現(xiàn)交換兩個(gè)整數(shù)的功能,(用指針做函數(shù)參數(shù))。
專(zhuān)注于為中小企業(yè)提供成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)漢川免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了上千家企業(yè)的穩(wěn)健成長(zhǎng),幫助中小企業(yè)通過(guò)網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。
要用函數(shù)實(shí)現(xiàn)兩個(gè)數(shù)的交換,則函數(shù)參數(shù)必須定義為指針形式,否則函數(shù)中對(duì)數(shù)值的修改將不會(huì)影響主調(diào)函數(shù),這是C語(yǔ)言的規(guī)則。
不知道你要交換的兩個(gè)變量類(lèi)型,所以這里以整型數(shù)據(jù)交換為例,以下swap函數(shù)實(shí)現(xiàn)了交換兩個(gè)整型變量值的功能:include stdio.h// 交換給定指針指向整型變量的值。
int *p, int *q){ int temp;//定義臨時(shí)變量 存放中間值 temp = *p;p = *q;q = temp;} 注意:不能直接寫(xiě)void swap(int i, int j);因?yàn)槟侵皇桥R時(shí)變量,函數(shù)調(diào)用完后,便釋放空間,兩個(gè)值并沒(méi)有交換。
而嚴(yán)重的情況是,該單元的數(shù)據(jù)可能是有用的,因此fun2()不但沒(méi)有實(shí)現(xiàn)兩個(gè)數(shù)的交換,反而給系統(tǒng)的穩(wěn)定性帶來(lái)威脅。fun3(),將int賦值給int *,編譯錯(cuò)誤。fun4()是正確的。
C語(yǔ)言中交換兩個(gè)變量需要用到一個(gè)臨時(shí)變量temp。
要用函數(shù)實(shí)現(xiàn)兩個(gè)數(shù)的交換,則函數(shù)參數(shù)必須定義為指針形式,否則函數(shù)中對(duì)數(shù)值的修改將不會(huì)影響主調(diào)函數(shù),這是C語(yǔ)言的規(guī)則。
利用指針作函數(shù)參數(shù),設(shè)計(jì)一函數(shù)實(shí)現(xiàn)將n個(gè)元素進(jìn)行排序 將這n個(gè)元素存在數(shù)組里,然后用指針類(lèi)型參數(shù)接收即作為形參,然后采用排序算法對(duì)這些元素進(jìn)行排序即可 C語(yǔ)言,編寫(xiě)一函數(shù),其功能是求一個(gè)長(zhǎng)整數(shù)各位數(shù)字之和。
借助中間變量完成,此方法直觀(guān),易理解,使用最多 不需要中間變量,通過(guò)變量身的運(yùn)算完成交換。
n){ int temp=*m;m=*n;n=temp;} int main(){ int a=5,b=6;swap(&a,&b);printf(a=%d b=%d\n,a,b);return 0;} 如上,就可以交換a,b兩個(gè)數(shù),因?yàn)閏中沒(méi)有引用傳遞,所以只能用指針實(shí)現(xiàn)交換。
利用指針作函數(shù)參數(shù),設(shè)計(jì)一函數(shù)實(shí)現(xiàn)將n個(gè)元素進(jìn)行排序 將這n個(gè)元素存在數(shù)組里,然后用指針類(lèi)型參數(shù)接收即作為形參,然后采用排序算法對(duì)這些元素進(jìn)行排序即可 C語(yǔ)言,編寫(xiě)一函數(shù),其功能是求一個(gè)長(zhǎng)整數(shù)各位數(shù)字之和。
注意形式參數(shù)和實(shí)際參數(shù)的區(qū)別,主函數(shù)中的x,y是實(shí)際參數(shù),swap函數(shù)中的a,b是形式參數(shù)。他們各有自己的存儲(chǔ)空間,互不干擾。
你這個(gè)采用的是值交換,在調(diào)用的函數(shù)里換完后,函數(shù)生命期結(jié)束死掉,而main函數(shù)里的值還是沒(méi)有變化。