昨天有讀者問到一個問題,不論是否理解有誤姑且先將本文發出來。
在軟體開發過程中有一種很常見的編程方法,就是即使將參數傳給無返回值的void函數也能實現對原始參數值的修改,這句話到底說的什麼意思,且看示例。

一個例子:普通帶參數的函數如何做返回值?(附代碼)
這是一個帶參數的普通函數,作用是統計字符串中的有效字符數('\0'不算有效字符),返回值即為字符串中的字符總數,類型為int,具體代碼入下:

代碼中的問題是非常關鍵的,感興趣的讀者可以嘗試在函數中聲明一個變量做返回值,看看會出什麼錯誤!
另一個例子:無返回值的帶參void函數如何做返回值?(附代碼)
void函數是沒有返回值的,那麼對於傳入的參數在計算處理之後,怎麼把結果返回呢?這裡給出兩種最常用的方式:指針和引用!這也是軟體開發中實際使用的方式。
仍然以計算字符串中有效字符總數為例,代碼入下:

其實主要採用的方式就是在主程序中直接聲明一個變量,然後把這個變量的引用或者指針作為參數直接傳遞給void函數,當void函數在做處理時,直接將結果寫到引用參數或者指針指向的主函數變量,這樣就間接實現了「返回值」。
總結
在需要調用子函數做處理時,void函數利用引用或者指針來「返回」處理結果是程式設計師經常用到的方式,主要原因是:一可以讓代碼更簡潔,二是能減少內存空間的佔用。
希望大家兩種方式都能掌握,因為很多情況下,尤其是涉及對象返回時,第一種方式的優越性就體現出來了。當然,第二種在void函數中間接「返回」處理結果的方式也要掌握,它是入門程式設計師和程式設計師之間的區別之一。