我在採訪中被問及如何從函數返回多個值。我回答說,我們可以通過使用指針來實現(通過引用來調用)這個指針。然後他告訴我他正在尋找其他方式來返回多個值。我說我們可以返回一個結構對象,但在這裏他似乎也沒有留下深刻的印象。如何通過C中的函數返回多個值?
我想知道其他方法從函數返回多個值。
我看到這個問題在這裏被問到SO,但找不到任何C具體。
我在採訪中被問及如何從函數返回多個值。我回答說,我們可以通過使用指針來實現(通過引用來調用)這個指針。然後他告訴我他正在尋找其他方式來返回多個值。我說我們可以返回一個結構對象,但在這裏他似乎也沒有留下深刻的印象。如何通過C中的函數返回多個值?
我想知道其他方法從函數返回多個值。
我看到這個問題在這裏被問到SO,但找不到任何C具體。
棘手的問題是,面試官有一些解決方案,他們特別滿意,他們可能會通過你是否擁有同樣的聰明把戲來給你分級。
你可以只說出幾個方法,如你所做的,但不會落在他們的祕密把戲上。如果你知道他們的祕密伎倆,你可能不會對它印象深刻。
所以在這些情況下,它將其從面試變爲談話。一旦你發現自己並沒有走向自我,你可以避免走向那些令人畏懼的「我不知道」「我放棄」,而是嘗試「那麼你有沒有什麼聰明的解決方案?這是在Xyz公司的房子食譜?「等等。
看到他們明顯自我印象深刻的解決方案,你又回到了堅實的基礎上,你可以談論它並詢問他們是否考慮過想到的各種因素,並基本採訪他們。
每個人都喜歡一個好的傾聽者,讓他們談論他們的竅門是讓他們離開面試的好方法,給你留下深刻的印象! ;)
有幾種方法:使用
但是如何使用return語句我可以返回多個值? –
@AmitSinghTomar:面試官可能意味着一種普通的「返回」,因爲在C中,只能用return來返回一個值。 –
返回指向結構的指針,或者將幾個小數據類型打包成一個大數據類型,或者使用全局變量。
第一種可能是最乾淨的方法,另外兩種可能在某些情況下使用。
如果我們傳遞地址而不是參數的真實值。
然後,無論何時我們引用這些參數,我們都會使用該地址進行操作。
這取決於你認爲值。如果一個值是你的一條信息,更多值可能是一個值的結構。更多的值也可以通過指針或數組傳遞,即使是包含(非零字母數字)值列表的列表的char*
。如果您認爲某個值只是一些信息,則返回的單個uint32_t
可能包含32 值。你甚至可能會弄亂信號或套接字或管道或文件。
但你甚至不知道該用例和它規定的解決方案的需求,它的確是一個相當艱鉅的任務,拿出的合適的解決方案(和你實際沒有想出一些適當的解決方案...)。
返回一個指向結構的指針是合適的答案(很明顯,程序的目標可以決定什麼是最好的)。面試官可能希望你說'我不知道',這會顯示你對這個領域缺乏信心。我認爲你提供了很好的解決方案,但不是他想到的。你可以問他一個典型的場景,他想要返回多個值,然後討論結構指針是一個合理的選擇。
除非面試者想要數組(但只能返回相同類型的值),否則結構和指針是返回多個值的唯一方法。 –
僅僅因爲面試官似乎對你返回一個結構(裏面有多個值)的答案似乎並不感冒,並不意味着它不是一個好的答案。是的,還有其他的方法,但是對於C++來說**結構的返回**是一個很好的答案。如果你能夠「返回」一個數組,那麼它會很好,但是在C中,你可以做的最好的事情就是返回一個指針,與C++不同的是你可以返回'std :: vector'。 「 –
」似乎沒有留下深刻的印象「......只是沒有留下深刻印象,還是他告訴你,你是明顯錯誤的,並沒有回答他的問題? – Bart