c語言中,為什麼要說明函式原型?
1樓:匿名使用者
函式原型能告訴編譯程式乙個函式將接受什麼樣的引數,將返回什麼樣的返回值,這樣編譯程式就能檢查對函式的呼叫是否正確,是否存在錯誤的型別轉換。例如,現有以下函式原型;
int some_func(int,char·,long);
編譯程式就會檢查所有對該函式的引用(包括該函式的定義)是否使用了三個引數並且返回乙個int型別的值。如果編譯程式發現函式的呼叫或定義與函式原型不匹配,編譯程式就會報告出錯或警告訊息。例如,對上述函式原型來說,當編譯程式檢查以下語句時,就會報告出錯或警告訊息:
x = some_func(l); not enough arguments passed */
x = somc_funcc*hellol", 1, "dude:")wrong type of arguments used */
x = aome_funcd, sir, 2879, "t");too many arguments passed */
下例中的函式呼叫同樣是不正確的,因為函式some_func()的返回值不是乙個long*型別的值。
lvalue=some_func(1,str,2879); some_rune()returns anint,not a long* *
同樣,編譯程式還能檢查函式的定義(或函式體)是否與函式原型匹配。例如,當編譯程式檢查以下函式定義時,就會報告出錯或警告訊息:
int some_func(char *string,longlvalue,int ivalue) /wrong order of
總之,在原始檔中說明函式原型提供了一種檢查函式是否被正確引用的機制。目前許多流行的編譯程式都會檢查被引用的函式的原型是否已在原始檔中說明過,如果沒有,就會發出警告訊息。
2樓:匿名使用者
可能是歷史遺留問題。
函式原型與函式宣告的關係
3樓:火神亮聊
c90 標準新增了函式原型,舊式的編譯器可能無法識別(稍後我們將介紹,如果使用這種編譯器應該怎麼做)。函式原型是一種宣告形式,告知編譯器正在使用某函式,因此函式原型也被稱為函式宣告(function declaration)。函式原型還指明瞭函式的屬性。
早期的c語言支援一種更簡單的函式宣告,只需指定返回型別,不用描述引數:
void butler();
早期的c**中的函式宣告就類似上面這樣,不是現在的函式原型。c90、c99 和c11 標準都承認舊版本形式,但是也表明了會逐漸淘汰這種過時的寫法。如果要使用以前寫的 c**,就需要把舊式宣告轉換成函式原型。
用自定義函式進行兩個數的交換C語言
要用函式實現兩個數的交換,則函式引數必須定義為指標形式,否則函式中對專數值的修改將不會屬影響主調函式,這是c語言的規則。所以,以整型為例,自定義函式書寫如下 void swap int int a,int b c語言用函式如何實現兩個數交換?include stdio.h int swap int ...
python自定義函式怎麼用,python中怎麼呼叫自定義函式
def hello name print hello,name hello tom 簡單的函式示例 python中怎麼呼叫自定義函式 如果自定義函式,是在當前檔案中定義的,直接呼叫即可,就像樓上回答的一樣 如果是在別的模組中定義的,那麼要在當前檔案中呼叫,就需要先導入對應的模組,匯入方法 在當前檔案...
帶引數的函式main怎麼用,C 主函式main帶引數的用法,詳細點最好
main函式中的兩個引數,argc表示輸入引數的個數,argv是引數的乙個陣列,你輸入2 6,那麼argc是2,argv兩面則是2和6兩個字元。你在通過型別轉換把2 6轉成數字,相加後輸出就可以了。include sscanf argv 2 d b printf d n a b return 0 i...