函數的參數分為形參和實參兩種形參出現:
1、在函數定義中,在整個函數體內都可以使用,離開該函數則不能使用。
2、實參出現在主調函數中,進入被調函數後,實參變量也不能使用。
數據傳送是形參和實參的主要功能。在發生函數調用時,主調函數把實參的值傳送給被調函數的形參從而實現主調函數向被調函數的數據傳送。
函數的形參和實參具有以下特點:
1. 形參變量只有在被調用時才分配內存單元,在調用結束時,即刻釋放所分配的內存單元。因此,形參只有在函數內部有效。函數調用結束返回主調函數後則不能再使用該形參變量。
2. 實參是常量、變量、表達式、函數等,無論實參是何種類型的量,在進行函數調用時,它們都必須具有確定的值,以便把這些值傳送給形參。因此應預先用賦值,輸入等辦法使實參獲得確定值。
3. 實參和形參在數量上,類型上,順序上應嚴格一致,否則會發生類型不匹配」的錯誤。
4. 函數調用中發生的數據傳送是單向的。即只能把實參的值傳送給形參,而不能把形參的值反向地傳送給實參。 因此在函數調用過程中,形參的值發生改變,而實參中的值不會變化。
形式參數就是定義函數時候的參數表,只是定義了調用時參數的個數、類型和用來引用的名字,並沒有具體的內容。形參未被調用時,不佔存儲單元。形參只在調用過程中佔用存儲單元。
在調用函數時,給形參分配存儲單元,實參不僅是常量、變量或者表達式,且要與形參類型一致!而且實參要有確定的值,在調用過程中實參將值賦給形參,並將實際參數對應的數值傳遞給形式參數;
當調用結束後,形參單元被釋放,實參單元仍然保留 並且維持原值。所以說,實參是調用函數傳遞的具體數據。實參對形參數據傳遞時時單向傳遞。在存儲單元中是不同的單元。
下面這段程序中的 a 和 b 都是形式參數,x和y都是實際參數
#include<stdio.h>int fun(int a,int b){a+=10; b=a+b*2;return a+b;}void main(){int x=3,y=5,z;z=fun(x,y);printf("%d %d %d ",x,y,z);}
程序從主函數開始運行,等到運行到z=fun(x,y)開始調用被調用函數,以被調用函數的形式進行運算,然後把計算的值返回後賦值給z,這樣一個運算就算完成了。在調用過程中,形參a和b的值都發生了改變,但是在main函數中,x和y的值都未發生變化。所以說實參向形參的值的傳遞是單向的。
以上便是小編對「C語言中函數的形參與實參是什麼?」的大致介紹,希望對您有所幫助!