你的問題的意思不明確啊。簡單為你說下吧。
成都創(chuàng)新互聯(lián)公司-云計算及IDC服務提供商,涵蓋公有云、IDC機房租用、四川樂山服務器托管、等保安全、私有云建設等企業(yè)級互聯(lián)網(wǎng)基礎服務,咨詢熱線:18982081108
形參是定義函數(shù)時的參數(shù),目的是用來接收調(diào)用函數(shù)時的實參值。實參是調(diào)用函數(shù)時的參數(shù),為函數(shù)對應的形參提供明確的數(shù)值或地址。函數(shù)調(diào)用中發(fā)生的數(shù)據(jù)傳送是單向的。即只能把實參的值傳送給形參,而不能把形參的值反向地傳送給實參。
形參和實參可以相同也可以不相同,但實參和形參在數(shù)量上,類型上,順序上應嚴格一致。
例如:
int
process(int
a
,double
b)
//a,b為形參,沒有具體數(shù)值
{
b=a*2;
return
b;
}
int
main()
{
int
a=1
;
double
b;
process(a,b);
//a,b為實參,a具體的值由main()中定義初始化的a對應傳入,b由process的函數(shù)體計算可得。
printf("%f",b);
}
形參變量只有在被調(diào)用時才分配內(nèi)存單元,在調(diào)用結(jié)束時,即刻釋放所分配的內(nèi)存單元。因此,形參只有在函數(shù)內(nèi)部有效。函數(shù)調(diào)用結(jié)束返回主調(diào)函數(shù)后則不能再使用該形參變量。
應該是以形參為準
在調(diào)用函數(shù)時,編譯器只知道形參類型,沒法知道實參類型
應該是會將實參轉(zhuǎn)換為形參的類型
你的參數(shù)傳遞的不對,max和min已經(jīng)是指針了,在加上*號就不是指針了。調(diào)用fun函數(shù)的時候直接傳max和min就行,不用帶*號。使用符號傳遞時雖然滿足了類型的要求,但是實際是對指針再次取地址了,參數(shù)內(nèi)容也不對。
編譯器在編譯時默認會做類型檢查,發(fā)現(xiàn)行參與實參類型不一致時會提示編譯警告,如果確認賦值調(diào)用不存在賦值不兼容,且不會發(fā)生溢值現(xiàn)象,可以使用強制類型轉(zhuǎn)換,跳開編譯警告。此外,可以也在編譯選項中取消類型檢查。
在main函數(shù)之前做函數(shù)申明一定沒錯。在main函數(shù)之前添加這一句float m(int x,float y)
還有,你說的int x,float y這兩個參數(shù)類型不一樣,這是完全允許的;實參在向形參傳遞參數(shù)的時候:實參會按照形參的類型進行轉(zhuǎn)換。
VC6嗎?Rebuild或者關閉VC6重新打開項目,然后Rebuild一下看看。
VC6經(jīng)常出現(xiàn)這種現(xiàn)象,因為緩存的問題,導致調(diào)試時提示不正確,實際上程序是對的。
如果是VC6,還有個辦法,關閉工程,刪除*.ncb文件,重啟項目,重新編譯,基本就OK。
當前標題:c語言函數(shù)的形參不對,c語言不在形參表中
網(wǎng)站URL:http://jinyejixie.com/article46/hsiphg.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供微信小程序、網(wǎng)站導航、服務器托管、商城網(wǎng)站、網(wǎng)站設計、網(wǎng)站內(nèi)鏈
聲明:本網(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)