上乙個例程中在進行函式呼叫的時候,不需要任何引數傳遞,所以函式定義和呼叫時括號內都是空的,但是更多的時候我們需要在主調函式和被呼叫函式之間傳遞引數。在呼叫乙個有引數的函式時,函式名後邊括號中的引數叫做實際引數,簡稱實參。而被呼叫的函式在進行定義時,括號裡的引數叫做形式引數,簡稱形參。我們用個簡單程式例子做說明。
unsigned char add(unsigned char x, unsigned char y); //函式宣告
void main()
//函式定義,這裡括號中的 x 和 y 就是形參
unsigned char add(unsigned char x, unsigned char y)
這個演示程式雖然很簡單,但是函式呼叫的全部內容都囊括在內了。主調函式 main 和被呼叫函式 add 之間的資料通過形參和實參發生了傳遞關係,而函式運算完後把值傳遞給了變數 c,函式只要不是 void 型別,就都會有返回值,返回值型別就是函式的型別。
關於形參和實參,還有以下幾點需要注意:
函式定義中指定的形參,在未發生函式呼叫時不佔記憶體,只有函式呼叫時,函式 add中的形參才被分配記憶體單元。在呼叫結束後,形參所佔的記憶體單元也被釋放,這個前邊講過了,形參是區域性變數。
實參可以是常量,也可以是簡單或者複雜的表示式,但是要求他們必須有確定的值,在呼叫發生時將實參的值傳遞給形參。如上邊這個程式也可以寫成:c = add(1, a+b);
形參必須要指定資料型別,和定義變數一樣,因為它本來就是區域性變數。
實參和形參的資料型別應該相同或者賦值相容。和變數賦值一樣,當形參和實參出現不同型別時,則按照不同型別數值的賦值規則進行轉換。
主調函式在呼叫函式之前,應對被調函式做原型宣告。
實參向形參的資料傳遞是單向傳遞,不能由形參再回傳給實參。也就是說,實參值傳遞給形參後,呼叫結束,形參單元被釋放,而實參單元仍保留並且維持原值。
C語言函式 形參和實參
形參 也叫形式引數 在定義函式名和函式體的時候使用的引數,他沒有資料,可以看做乙個佔位符,只能等到函式被呼叫時接收傳遞進來的資料,所以稱為形式引數 實參 也叫實際引數 在呼叫時傳遞給函式的引數,即傳遞給被呼叫函式的值,會被被呼叫函式內部使用,所以稱為實際引數 形參和實參的區別 1 形參變數在函式未被...
C語言 形參和實參
c語言引數出現在兩個地方 函式定義處 函式呼叫處。函式定義處的引數是形式引數,只用在函式呼叫時才分配記憶體,函式呼叫完成後釋放記憶體,簡稱形參。函式呼叫處的引數是實際引數,可以是常量 變數 位址 指標 陣列 等。在函式呼叫時實參把值單向傳遞給形參,形參參與運算,實參本身不參與運算。在被調函式中,若只...
C語言 函式的宣告 形參和實參
例1 include voidg void int main 例2 include voidf void 函式宣告,分號不能丟 intmain voidf void 函式呼叫和函式定義的順序 如果函式呼叫寫在函式定義前面,則必須加函式前置宣告 告訴編譯器即將可能出現的若干個字母代表的是乙個函式 告訴...