回答
因爲這就是語言的定義方式。沒有根本原因;其他語言可以返回多個值(例如Matlab)。
作爲「解決辦法」,你可以返回一個包含多個字段一個struct。
你也可以傳入一個指針並從你的函數中修改它。 –
由於我們可以將多個變量傳遞給函數,變量將在堆棧中創建空間。那麼爲什麼我們不能返回多個變量。如果它從堆棧或一些內存返回? – kapilddit
@kapilddit:因爲這是定義的語言。 –
您可以完全由將它們放入一個結構「返回」超過1項,或指針傳遞給函數,這樣函數可以編寫持續的函數返回之後一定價值。
相反,它是如何表達的,沒有價值實際上得到「返回」。 實際上,返回值/地址作爲堆棧中的參數傳遞給函數調用。然後,return語句實際上修改了該參數,從而將結果傳遞給調用者。
從某種意義上說,這幾乎就像void func(arg1, arg2, *ret)
不同的語言,不同的方式處理這個。 C預計棧中只有一個「返回」參數。事實上,結構會讓你「返回」多個值,所以將指針傳遞給一個結構作爲一個正常的參數也是如此。
現代CPU/ABI是真的嗎? – Austin
- 1. 如果爲空,則返回多個值
- 2. 如果函數值爲空則返回
- 3. 如果select返回null,則返回值
- 4. 從C函數返回多個值
- 5. 從函數返回多個值C
- 6. 如何從函數返回多個值。
- 7. 如果多重返回函數返回錯誤值?
- 8. 爲什麼我不能從Java中的void函數返回值?
- 9. 如果多個值返回字符串,如果count = 1返回列值
- 10. 爲什麼我不能在這裏返回多個值?
- 11. 功能不返回多個結果
- 12. 爲什麼我不能返回$ .ajax結果,但可以返回$ http.post結果?
- 13. 爲什麼我的函數不返回返回值?
- 14. 如何從c中的某個函數返回多個值
- 15. 爲什麼此函數返回的結果比返回的結果要多?
- 16. 爲什麼我不能從主函數返回更大的值?
- 17. 爲什麼這個函數的返回值沒有返回?
- 18. '返回'可以返回C中的多個值嗎?
- 19. 返回多個函數值main() - C++
- 20. oracle函數可以返回多個值
- 21. 如果返回0,則檢查值否則返回值
- 22. 如果$值truthy,返回$值,否則返回別的東西
- 23. 只返回Go中的多個返回值中的一個返回值
- 24. 從映射函數返回多個值
- 25. 從函數返回多個值與Plyr
- 26. 從Oracle函數返回多個值
- 27. SQL Server:從函數返回多個值
- 28. 從函數返回多個值
- 29. 爲什麼從sqlite返回值返回一個空的數組
- 30. SQL返回值如果不爲空,則返回零,如果爲空
這甚至意味着什麼? – SLaks
爲什麼返回一些值有限制? – kapilddit
它甚至意味着返回多個值? –