一、形參出現在函式定義中,在整個函式體內都可以使用,形參變數只有在被呼叫時才分配記憶體單元,在呼叫結束時即刻釋放所分配的記憶體單元,因此,形參只有在函式內部有效。函式呼叫結束返回主調函式後則不能再使用該形參變數。 離開該函式則不能使用,實參出現在主調函式中,進入被調函式後,實參變數也不能使用。
二、形參和實參的功能是作資料傳送。發生函式呼叫時,主調函式把實參的值傳送給被調函式的形參從而實現主調函式向被調函式的資料傳送。
三、實參可以是常量、變數、表示式、函式等,無論實參是何種型別的量,在進行函式呼叫時,它們都必須具有確定的值,以便把這些值傳送給形參。因此應預先用賦值,輸入等辦法使實參獲得確定值。
四、實參和形參在數量上,型別上,順序上應嚴格一致,否則會發生「型別不匹配」的錯誤。
五、實參和形參的資料傳遞方式有兩種,
1)一種是值傳遞,實參和形參都不是指標,這種情況下函式呼叫中發生的資料傳送是單向的。 即只能把實參的值傳送給形參,而不能把形參的值反向地傳送給實參。 在函式呼叫過程中,形參的值發生改變,而實參中的值不會變化。究其原因,是因為這兩個引數在記憶體中位於不同的位置,值傳遞只是形參將實參的內容複製,在記憶體中被分配了新的記憶體單元,在函式執行完畢以後位址會立刻被釋放掉,因此形參的改變不會對實參有任何影響。 2)另一種是位址傳遞,就是實參與形參共用同乙個記憶體單元,在函式執行的過程中,實際就是對實參的位址進行操作,因此形參改變,實參同步變化,實際他們就是同一變數,因為在記憶體中佔據的就是乙個記憶體單元。
不過下面這個例子很狡猾,就是指標作為形參時,實參s只是把位址傳遞給了形參p,在函式體內,p指標指向了下乙個記憶體位址,因此原記憶體位址中的內容並未改變,p指標變數的如何變化與s無關,除非p指標改變了實參所指向位置的記憶體單元中的數值,那麼訪問實參所得值也會隨之變化。
輸出的結果是1,而不是2。
C語言基礎 形參與實參
上課老師會給你講函式的形參與實參的概念,前期基本上背誦,沒有真正理解。這裡寫乙個簡單的例子說明下。測試用例如下 arm linux gcc test para.c o test para 這裡用交叉編譯工具,方便後面讀彙編 測試結果,很明顯real swap func才能達到交換的目的 簡單的說你得...
C語言 函式的形參與實參
形參出現在函式定義中,在整個函式體內都可以使用,離開該函式則不能使用。實參出現在主調函式中,進入被調函式後,實參變數也不能使用。形參和實參的功能是作資料傳送。發生函式呼叫時,主調函式把實參的值傳送給被調函式的形參從而實現主調函式向被調函式的資料傳送。1.形參變數只有在被呼叫時才分配記憶體單元,在呼叫...
函式的形參與實參的關係
函式的形參與實參實際上是乙個 的賦值關係,明白了這一點對於就更容易理解一些複雜的形實參的形式,如 函式定義 int splitfloat float x,int intpart,float fracpart 呼叫的時候 splitfloat x n,f 分析 1.函式採用了兩個指標作為引數,在呼叫時...