C語言的函數還真的只能有一個值返回,因為大部分情況下,我們不需要返回多個值,C語言規范中為了盡量避免程序設計的難度,就沒有考慮函數的多個值的返回情況。即使有返回多個值的需求,也可以通過其它方式實現。我總結一下,大概有四種方式
一.傳參數
通過
如果采用引用的方式,稍微改一下就好了,如下
這樣a和b其實可以看成是要返回的兩個值,這種通過指針和引用的方式一般是用得最多的多值返回方式。
二.返回元組
當然我們可以以數組的形式值返回,即使類型不一樣也沒有關系,比如要返回三種類型的值,都將它們存入到一個string類型的數組里面,將每一個類型的值當成字符串存入,在使用時解析并轉化一下類型就好了。
其實在C++11中就有tuple可以滿足這個需求了,tuple中可以放不同類型的元素,并且在使用時也有對應方法獲取變量值。例如
返回tuple的類型,然后按下標獲取對應的字段值即可。
三.返回字符串
這種形式是將返回的多個字段作為字符串通過一些分隔符拼接起來作為整體返回,跟返回字符串數組差不多,只不過一個返回字符數組的形式要多一個拼接和分割操作,稍微麻煩一點,不過,在Java中這種方式我用得比較多。
四.返回結構體
即直接定義一個結構體,這個結構體包含了所有要返回的值字段,類型可以不一樣,但這樣多定義了一個結構體,導致程序看起來比較冗余。
在C/C++語言中,雖然我們不能像Python那樣直接返回多個值,但通過上面的四種方式實現多個值的返回,也基本上能滿足我們的需要。