回覆列表
-
1 # TonyDeng
-
2 # 素食的貓
如果你處理的資料比較大,那麼用區域性變數也用不了啊,沒玩過微控制器C語言,你可以在函式中說明一個數組看看,應該沒有全域性的陣列大吧?如果存在這樣的問題,那麼只能全域性變數。
別把全域性變數看成洪水猛獸,從UNIX核心到很多科學計算程式,大量全域性變數。
-
3 # 嘟嘟bin
對於你這個問題,我認為二者不能直接比較哪個好,說白了你的問題本意可以理解為在特定情形下該如何選擇二者。
首先你要理解全域性變數的作用,首先我認為最重要的一點就是用於兩個獨立操作之間的通訊,假設兩個獨立操作之間沒有互動,那麼直接在函式內部用區域性變數就好了。使用全域性變數的另一個原因是當你的資料結構比較大的時候,用區域性變數會超過堆疊限制,此時你必須起一個全域性變數來避免這個問題。
函式返回是被調函式將結果返回給呼叫者的,用函式返回方式可以使介面清晰簡單,但結果總是要使用的,可以作為函式實參,也可以直接賦值給一個變數。也不能將所有有計算結果的操作都設計成函式返回形式,那樣會顯得太冗餘了,至於返回形式和型別你要視具體而定了。
總而言之,你需要根據你想實現的目的,在二者之間選擇合適的形式來實現你的程式碼,你可以多參考一些官方程式碼庫或者權威書籍來進一步學習。
沒有絕對的。雖然說原則上少用全域性資料,使用全域性資料只要找出充分的理由去說服自己,亦不妨使用,一切以自然為標凖,視程式復雑性和邏輯而定。全域性資料的優點是訪問直接,缺點是容易遭受破壞。使用之前,先審查這個資料在邏輯上是否應當是全域性性的,若是,則肯定要設定為全域性量,這叫順其自然,強扭的話,程式做下去,必定各種彆扭層出不窮。如果邏輯不是全域性的,而為了貪方便設為全域性的,那麼要考慮後面程式設計出現破壞資料的可能性有多大,有把握能避得過又不致代價太高,也不妨。
以資源匱乏的理由去使用全域性資料是不妥的,事實上程式的全域性資料區也有限,肯定比整體少,整體都不夠,用更少的全域性資料區也一般不夠,倒不如用區域性資料透過回收得到更多的使用機會。