-
1 # 通訊人的自我修養
-
2 # 源棋
首先我們要明白,在函式呼叫的過程中,出現兩種引數。
1.實際引數就是在呼叫函式的時候給函式傳遞數值的引數。
2.形式引數顧名思義就是在函式定義的時候定義的引數。
值傳遞的過程就是將實際引數傳遞給形式引數的過程,傳遞的是實際引數的複製後的結果,同時不會改變實際引數的數值,形式引數得到數值後開始執行函式的演算法內容,執行完成後釋放形參內容。
-
3 # 琪浩電子攻城獅
形參在函式定義中使用,只能在函式內部使用,離開函式後就不能使用了。形參相當於函式中的一個區域性變數。
實參在函式呼叫中使用,作用相當於給形參賦值用的,賦完值就跟這個函式沒關係了。
"形參"和"實參"僅僅從名字上來看的話是不好理解它們存在的意義。它倆出現在函式的定義和呼叫中,也就是說他倆是為函式服務的。那就從函式的生命週期來分析它倆為何這樣存在。
正常情況下,函式是儲存在ROM中。當函式被呼叫(執行的時候),他就會被轉入到RAM中執行。任何一個函式被呼叫的時候都是為了實現一定的運算功能。一般的功能都需要有運算資料(也就是實參的資料),運算完成後有運算結果(也就是返回值)。那函式在執行的時候,為什麼不直接操作實參,而是要把實引數據傳遞給形參,函式再去操作形參呢?
那是為了"低耦合性",程式程式設計思想上有這麼一句話"低耦合,高內聚"。意思就是說函式和函式之間的關係儘量簡單、明確,不要有曖昧關係。這樣做就是為了提高程式的可閱讀性,可維護性。函式在執行的時候申請一塊RAM區域,在其中也包括形參的空間,並把實參的資料給到形參。
函式也只是操作形參,不操作實參,這樣就和實參扯清關係了,等到函式死掉(從RAM中釋放)的時候,就不需要再管實參的關係了,可以直接把函式呼叫時申請的RAM全部清空,簡單高效,同時返回值也與此類似。
形參是函式的入口,返回值是函式的出口。函式的執行只用自己內部的空間,跟其它任何資料都沒關係,大大提高了"低耦合性"。這就是形參和實參存在的意義。
-
4 # 無敵條友
值傳遞和引用傳遞的本質是,傳遞的內容呼叫者還需不需要。
值傳遞可以認為是函式的入參。函式內部不管怎麼處理這個入參,呼叫者都不關心,呼叫者不再需要這個資料,也感知不到這個資料。
引用傳遞可以認為既是入參也是出參。函式內部可以讀引用的資料,也可以修改,如果修改了呼叫者是可以感知到的。
回覆列表
傳參的作用可不一定就是為了改變這個引數的值,是由很多其他用處的,例如舉個最簡單的例子。。。
如果你需要一個求和運算,你可以寫一個test(int a, int b){}的方法,用的時候呼叫這個方法,傳的值是a和b可是運算完了a和b的值沒變,但是返了兩個值的和,正是我想要的。