/ 編寫c語言程序,實(shí)現(xiàn)交換兩個(gè)變量值的操作。要求:使用形參為指針的函數(shù)swap完成交換功能。主函數(shù)中,使用整型指針從鍵盤輸入兩個(gè)整數(shù),通過調(diào)用swap完成交換 輸出交換前后的變量值進(jìn)行比較。
在伊通等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供成都網(wǎng)站制作、網(wǎng)站設(shè)計(jì)、外貿(mào)網(wǎng)站建設(shè) 網(wǎng)站設(shè)計(jì)制作按需定制制作,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),品牌網(wǎng)站制作,成都全網(wǎng)營銷,外貿(mào)營銷網(wǎng)站建設(shè),伊通網(wǎng)站建設(shè)費(fèi)用合理。
首先,就是最基本的知識,寫頭文件、函數(shù)聲明、定義變量。下面還需要定義指針,需要定義兩個(gè)指針p1和p2,然后把a(bǔ)的地址賦值給p1,把b的地址賦值給p2。
這個(gè)無法交換數(shù)據(jù)。C語言函數(shù)參數(shù)的基本規(guī)則是值傳遞,所以傳遞時(shí)只能實(shí)現(xiàn)實(shí)參向形參的單向的、值的傳遞。這就是為什么需要使用指針才能實(shí)現(xiàn)值交換的原因。
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è)值并沒有交換。
不考慮變量類型,而直接交換值。需要三個(gè)參數(shù),兩個(gè)變量地址,以及變量所占的空間。
這個(gè)就是2種函數(shù)調(diào)用方式中的地址傳遞調(diào)用方式(另一種是傳值方式)。
如果直接傳值(void swap(int a,int b)),那么無論在函數(shù)里如何修改這個(gè)值,都修改的是函數(shù)里那個(gè)變量的值,不會(huì)影響外面。
函數(shù)調(diào)用的原理是這樣的,傳來一個(gè)參數(shù),被調(diào)函數(shù)自己創(chuàng)建一個(gè)空間用來存儲自己的變量,在這個(gè)里面改變的結(jié)果都不能直接返回到主調(diào)函數(shù)的內(nèi)存單元中去,一旦被調(diào)函數(shù)結(jié)束,此內(nèi)存空間就被釋放,你改變的那個(gè)變量也就消失了。
指針就是一個(gè)地址,用指針傳遞就是傳遞一個(gè)地址,你對一個(gè)地址所對應(yīng)的內(nèi)存操作,當(dāng)然就會(huì)在被調(diào)函數(shù)中改變調(diào)用函數(shù)的變量的值。
int temp;定義臨時(shí)變數(shù) 存放中間值 temp = *p;p = *q;q = temp;} 注意:不能直接寫void swap(int i, int j);因?yàn)槟侵皇桥R時(shí)變數(shù),函式呼叫完后,便釋放空間,兩個(gè)值并沒有交換。
主函數(shù)中,使用整型指針從鍵盤輸入兩個(gè)整數(shù),通過調(diào)用swap完成交換 輸出交換前后的變量值進(jìn)行比較。
不知道你要交換的兩個(gè)變量類型,所以這里以整型數(shù)據(jù)交換為例,以下swap函數(shù)實(shí)現(xiàn)了交換兩個(gè)整型變量值的功能:include stdio.h// 交換給定指針指向整型變量的值。
swap(&a,&b);printf(%d %d\n,a,b);return 0;} swap操作實(shí)現(xiàn)交換兩個(gè)容器內(nèi)所有元素的功能。要交換的容器的類型必須匹配: 必須是相同類型的容器,而且所存儲的元素類型也必須相同。
要用函數(shù)實(shí)現(xiàn)兩個(gè)數(shù)的交換,則函數(shù)參數(shù)必須定義為指針形式,否則函數(shù)中對數(shù)值的修改將不會(huì)影響主調(diào)函數(shù),這是C語言的規(guī)則。