單片機C語言中用全局變量好,還是用函數返回好?為何?

草原五班班代


對於你這個問題,我認為二者不能直接比較哪個好,說白了你的問題本意可以理解為在特定情形下該如何選擇二者。

首先你要理解全局變量的作用,首先我認為最重要的一點就是用於兩個獨立操作之間的通信,假設兩個獨立操作之間沒有交互,那麼直接在函數內部用局部變量就好了。使用全局變量的另一個原因是當你的數據結構比較大的時候,用局部變量會超過堆棧限制,此時你必須起一個全局變量來避免這個問題。

函數返回是被調函數將結果返回給調用者的,用函數返回方式可以使接口清晰簡單,但結果總是要使用的,可以作為函數實參,也可以直接賦值給一個變量。也不能將所有有計算結果的操作都設計成函數返回形式,那樣會顯得太冗餘了,至於返回形式和類型你要視具體而定了。


總而言之,你需要根據你想實現的目的,在二者之間選擇合適的形式來實現你的代碼,你可以多參考一些官方代碼庫或者權威書籍來進一步學習。


智能嵌入式


如果你處理的數據比較大,那麼用局部變量也用不了啊,沒玩過單片機C語言,你可以在函數中說明一個數組看看,應該沒有全局的數組大吧?如果存在這樣的問題,那麼只能全局變量。

別把全局變量看成洪水猛獸,從UNIX內核到很多科學計算程序,大量全局變量。


素食的貓


沒有絕對的。雖然說原則上少用全局數據,使用全局數據只要找出充分的理由去說服自己,亦不妨使用,一切以自然為標凖,視程序復雑性和邏輯而定。全局數據的優點是訪問直接,缺點是容易遭受破壞。使用之前,先審查這個數據在邏輯上是否應當是全局性的,若是,則肯定要設置為全局量,這叫順其自然,強扭的話,程序做下去,必定各種彆扭層出不窮。如果邏輯不是全局的,而為了貪方便設為全局的,那麼要考慮後面程序設計出現破壞數據的可能性有多大,有把握能避得過又不致代價太高,也不妨。


以資源匱乏的理由去使用全局數據是不妥的,事實上程序的全局數據區也有限,肯定比整體少,整體都不夠,用更少的全局數據區也一般不夠,倒不如用局部數據通過回收得到更多的使用機會。


TonyDeng


從易讀性,易維護性看,肯定用函數好!

但在個別資源特別匱乏的情況下,可以考慮用全局變量。


分享到:


相關文章: