-3
Q
試圖瞭解函數原型
A
回答
1
您應該始終聲明並使用原型語法定義您的函數;這樣做可以讓編譯器在函數調用中傳遞錯誤數量或類型參數的地方捕獲錯誤。 C仍支持不使用原型語法的聲明和定義,但僅支持古代代碼庫;你不應該使用舊的語法編寫新的代碼。
至於什麼參數進入原型,完全取決於函數需要做什麼。假設我正在爲數學庫中的pow()
函數寫一個替換。我需要2個參數,一個是基礎,接下來的是指數:
double myPow(double base, int exp); // declaration, prototype syntax
...
double myPow(double base, int exp) // definition, prototype syntax
{
...
}
您可以在聲明中省略該參數名:
double myPow(double, int);
要緊的是數量和類型參數被指定。
舊式聲明和定義是這樣的:
double myPow(); // declaration, old syntax
...
double myPow(base, exp) // definition, old syntax
double base;
int exp;
{
...
}
你不選擇你定義一個函數的參數的唯一時間是main
功能;在您定義main
的實現時,您無法確定要採用哪些參數。 main
或者不採用任何參數:int
類型和char **
的
int main(void)
或兩個參數:
int main(int argc, char **argv)
的實現爲main
可以提供額外的原型(如一些Unix發現三分之一char **envp
參數實現),但這僅限於實現 - 您不能爲main
創建任意的接口。
相關問題
- 1. 試圖瞭解泛型
- 2. 試圖瞭解C++函數的代碼
- 3. 試圖瞭解一個函數
- 4. 試圖瞭解dplyr函數 - group_by
- 5. 依賴倒置原則:試圖瞭解
- 6. 試圖瞭解JavaScript中的DRY原理
- 7. 試圖瞭解這個字符串到整數函數的工作原理
- 8. 瞭解Lambda函數的工作原理
- 9. 瞭解Javascript原型鏈
- 10. 試圖理解對象原型
- 11. 試圖瞭解
- 12. 試圖瞭解一個滾動型
- 13. 試圖瞭解MVC模型,建議?
- 14. 試圖瞭解validates_presence_of測試失敗的原因
- 15. 試圖瞭解underscore.js
- 16. 試圖瞭解類
- 17. 試圖瞭解gsoap
- 18. 試圖瞭解toggleClass()
- 19. 試圖瞭解XMPP
- 20. 試圖瞭解TransactionScope
- 21. 試圖瞭解QTCompressionOptionsWindowTest
- 22. 試圖瞭解Task.ContinueWith()
- 23. 試圖瞭解WSGI
- 24. 試圖瞭解pygame
- 25. 試圖瞭解TranslationInView
- 26. 試圖瞭解onPageScrolled
- 27. 試圖瞭解「_root」
- 28. 試圖瞭解。數據在MIPS和如何調用函數
- 29. 試圖瞭解解密
- 30. 試圖瞭解Android測試
_您可以根據您的要求決定函數應具有哪些參數。如果你的工作是通過2個參數完成的,然後傳遞兩個參數。參數數量不是預定義的(_built-in函數是exception_)。 – ameyCU
原型應該與函數定義完全相同,後跟';'。 C的老版本允許其他方式來做到這一點,但這些會導致混淆。如果函數定義(執行體)在實際調用之前出現在模塊中,則不需要原型 - 因爲編譯器已經知道它。 –
不,你不需要總是聲明原型。如果你寫了幾個函數,那麼編寫原型將幫助你保持軌道。假設你需要一個函數,你只需要輸入一個原型,然後你應該完成這個功能。否則,你可以寫上面描述的@Weather Vane函數。 – cjahangir