不知道你對函數(shù)這個東西有沒有概念。在程序執(zhí)行swap函數(shù)的時候,傳進(jìn)函數(shù)的兩個值3,4分別賦值給了x,y,并x,y進(jìn)行了值的交換。所以輸出的是43。當(dāng)你用printf的時候輸出的是a,b的值,所以是34。可能是行得到的結(jié)果都是43,但是這個過程中要想實現(xiàn)輸出43,必須使用指針才行。如果深入的解釋一下就是從內(nèi)存開始了。當(dāng)你定義a,b的時候系統(tǒng)會給a,b分配內(nèi)存,每個內(nèi)存都有一個地址,數(shù)據(jù)就存放在帶有地址的內(nèi)存當(dāng)中。那么在自定義函數(shù)里也是這樣。x,y同樣有自己的內(nèi)存地址,并且和ab是不一樣的,所以你做交換的時候交換的知識xy中的數(shù)據(jù),并沒有對ab做什么操作。所以在用printf輸出數(shù)據(jù)的時候仍然是34。不知道你理解沒有,還是先對內(nèi)存的結(jié)構(gòu)進(jìn)行一下了解吧。

創(chuàng)新互聯(lián)建站專注于定海企業(yè)網(wǎng)站建設(shè),響應(yīng)式網(wǎng)站,成都做商城網(wǎng)站。定海網(wǎng)站建設(shè)公司,為定海等地區(qū)提供建站服務(wù)。全流程按需網(wǎng)站制作,專業(yè)設(shè)計,全程項目跟蹤,創(chuàng)新互聯(lián)建站專業(yè)和態(tài)度為您提供的服務(wù)
第一,如果你沒有看錯就是你的書錯了,只有int和char類型的函數(shù)不必聲明
第二,C中可以不聲明函數(shù)的條件是3個
1就是上面我說的
2.是被調(diào)函數(shù)定義在主調(diào)函數(shù)之前,可不必聲明
3函數(shù)的外部已聲明過了,個個主調(diào)函數(shù)中不必聲明
對于第二點,很好解釋,因為聲明的目的在于告訴編譯器有這么個自定義函數(shù),返回類型是什么,如果被調(diào)函數(shù)定義在主調(diào)函數(shù)之前,那么編譯器自然就知道了這個函數(shù)
你把f2和f1換下位置并去掉聲明就明白了
再說一句,寫函數(shù)聲明是編寫程序的良好習(xí)慣
請注意這是C程序,C官方聲明標(biāo)準(zhǔn)編譯器是Turboc 2。0
不要把C++的概念強(qiáng)加給C
我不是說VC++6不好,而是說既然是在學(xué)C,就要用標(biāo)準(zhǔn)的C編譯器,只有標(biāo)準(zhǔn)C編譯器才能正確的學(xué)習(xí)C的基礎(chǔ)理論
關(guān)于c語言中函數(shù)調(diào)用問題解答如下:
首先如果是編譯的這個代碼那這個函數(shù)肯定被調(diào)用了,讓你覺得沒有調(diào)用是因為while循環(huán)沒有被執(zhí)行。
圖中紅色框內(nèi)代碼p1和p2經(jīng)過賦值p1是肯定大于p2所以不滿足while.的條件直接退出了函數(shù)。
你需要看看要實現(xiàn)啥在改一下。
在C語言中,實參數(shù)組在傳遞到函數(shù)形參中時,會退化為指針。也就是說mid函數(shù)中的a實際上是一個指針,而不是數(shù)組。盡管形參的聲明是int a[],它實際上和int *a是一樣的。
在32位程序中,一個指針占4字節(jié),而一個int型也占4字節(jié)。因此sizeof(a)/sizeof(int)=4/4=1。
本文標(biāo)題:c語言里函數(shù)問題,C語言函數(shù)問題
標(biāo)題鏈接:http://chinadenli.net/article31/dseshsd.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供軟件開發(fā)、網(wǎng)站策劃、手機(jī)網(wǎng)站建設(shè)、微信小程序、微信公眾號、定制網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)