我有疑問 我知道一個函數和過程之間的主要區別是 該函數強制返回一個值,其中過程可能會返回值,也可能不會返回值。 但是,當我們使用void類型的函數時,它什麼都不返回。 請你們澄清我的疑問。函數和過程之間的區別?
回答
在C及其衍生詞中,術語「過程」很少使用。 C有一些函數返回一個值,其中一些沒有。我認爲這是C遺產的一個製品,在ANSI C中引入void
之前,沒有辦法而不是返回一個值。默認情況下函數返回int
,如果沒有指定明確的返回值,您可以忽略它(仍然可以),並且可能是一些隨機數。
在Pascal語言家族中,區別是顯式的,函數返回一個值,程序不會。每種情況下都使用不同的關鍵字進行定義。 Visual Basic還與函數和子例程(?)區分開來。
既然我們在談論Objective-C,還有一些問題會讓你困惑。與類或對象相關的函數被稱爲「方法」(分別是類方法和實例方法)。另外,如果我們正在迂腐,你不調用Objective-C方法,你可以通過向對象發送消息來調用它們。區別實際上非常重要,因爲消息名稱(又名「選擇器」)不一定總是指向相同的方法,它可以在運行時更改。這與Java和C++等語言根本不同,其中特定類的特定方法名稱實際上僅僅是構成方法主體的代碼塊地址的符號名稱。
傳統上,返回值的過程被稱爲函數(參見下文),但是,許多現代語言完全免除了術語過程,更喜歡對所有命名代碼塊使用術語函數。
Read more at Suite101:程序,子程序或函數?:編程術語101 - 查看程序,子程序和函數在方法和定義上的差異。 http://www.suite101.com/content/procedure--subroutine-or-function--a8208#ixzz1GqkE7HjE
根據編程語言的不同,區別可能不那麼清楚。讓我們採取保守的語言,帕斯卡爾:
procedure
確實沒有返回值。它用於沒有返回值或具有多個返回值的操作。在後一種情況下,多個參數(返回參數或輸出參數)通過引用傳遞(使用關鍵字var
),並且它們的值直接從過程中修改。 (請注意,根據具體情況,後一種情況可能不被視爲良好做法)。function
有一個單一的返回值,通常我們不希望它改變其任何參數的值(然後可以通過值或通過關鍵字const
傳遞哪些參數)。將多個返回值綁定到記錄中可能會返回多個返回值。
Ç或爪哇不區分語法,所以返回類型void
的函數可以被認爲是一個過程。 斯卡拉區分他們之間的方法頭和方法體之間的等號。
一般,無論實際的語言如何調用它的結構,我們將理想預計
- 一個
function
接受參數,不修改任何狀態(如變異參數,全局變量,或將用戶的信息打印到控制檯),並返回計算結果。 - A
procedure
需要參數,執行可能產生副作用的操作(寫入數據庫,打印到控制檯,可能會突變變量),但希望不會改變任何參數。
但實際上,根據情況,可以觀察到這些期望的混合。堅持這些準則有助於我思考。
- 1. read.table和read.delim函數之間的區別
- 2. 語句和函數之間的區別
- 3. MPI_Allgather和MPI_Alltoall函數之間的區別?
- 4. setcookie()和session_set_cookie_params()函數之間的區別
- 5. getch()和scanf()函數之間的區別
- 6. 函數和語句之間的區別
- 7. jinja2函數和過濾器之間的區別?
- 8. 數據/類型構造函數和函數之間的區別?
- 9. 函數和函數指針之間的區別作爲參數
- 10. 存儲過程和擴展存儲過程之間的區別
- 11. SQL過程和CLR過程之間的區別?
- 12. 事件處理程序和回調函數之間的區別
- 13. 函數對象和函數指針之間的區別?
- 14. 新AsyncCallback(AddressOf函數)和AddressOf函數之間的區別
- 15. jquery函數和常規javascript函數之間的區別?
- 16. 析構函數和函數之間的區別是什麼?
- 17. 「函數返回」和「函數無返回」之間的區別
- 18. 內聯函數和靜態內聯函數之間的區別
- 19. Dalvik Bridge函數和Dalvik Native函數調用之間的區別?
- 20. char函數(void)和void函數(void)之間的C區別
- 21. 請解釋函數($變量)和函數()之間的區別
- 22. 構造函數和new/malloc之間的區別,析構函數與delete/free之間的區別
- 23. TypeScript:函數類型之間的區別
- 24. 這兩個函數之間的區別
- 25. Javascript - 函數聲明之間的區別
- 26. javascript構造函數之間的區別
- 27. 函數對象之間的區別R
- 28. JavaScript函數聲明之間的區別?
- 29. Python:過濾器(函數,序列)和映射(函數,序列)之間的區別
- 30. 過程和過程映像之間有什麼區別?
除此之外,關於對象,我們經常使用術語「方法」。 – JeremyP 2011-03-17 10:06:17