形參和實參的個數沒有對應上。su函式定義了兩個引數,分別是int x和int i,但是在主函式呼叫的時候指只調用了一個x。
形參和實參的區別和聯絡
1、形參變數只有在函式被呼叫時才會分配記憶體,呼叫結束後,立刻釋放記憶體,所以形參變數只有在函式內部有效,不能在函式外部使用。
2、實參可以是常量、變數、表示式、函式等,無論實參是何種型別的資料,在進行函式呼叫時,它們都必須有確定的值,以便把這些值傳送給形參,所以應該提前用賦值、輸入等辦法使實參獲得確定值。
3、實參和形參在數量上、型別上、順序上必須嚴格一致,否則會發生“型別不匹配”的錯誤。當然,如果能夠進行自動型別轉換,或者進行了強制型別轉換,那麼實參型別也可以不同於形參型別。
4、函式呼叫中發生的資料傳遞是單向的,只能把實參的值傳遞給形參,而不能把形參的值反向地傳遞給實參;換句話說,一旦完成資料的傳遞,實參和形參就再也沒有瓜葛了,所以,在函式呼叫過程中,形參的值發生改變並不會影響實參。
擴充套件資料
函式呼叫的本質:
在執行呼叫一個函式:本質就是透過call指令呼叫函式在程式碼段的地址進行直接呼叫。在彙編指令可以看到當函式執行完畢,執行ret彙編指令退出函式。其實一個完整的函式呼叫必定包含call和ret指令。
函式分類:
1、從使用者使用的角度看,函式有兩種,分別為系統函式和使用者自己定義的函式。系統函式又稱庫函式,是由編譯系統提供的,使用者不必自己定義這些函式,可以直接使用它們;使用者自己定義的函式是用於解決使用者的專門需要。
注:庫函式在使用時程式中必須包含相應的標頭檔案,如,#include《iostream》等。
2、從函式的形式看,函式又分為無參函式和有參函式。無參函式呼叫時不必給出引數,有參函式呼叫時要給出引數,在主調函式和被調函式之間有資料傳遞。
形參和實參的個數沒有對應上。su函式定義了兩個引數,分別是int x和int i,但是在主函式呼叫的時候指只調用了一個x。
形參和實參的區別和聯絡
1、形參變數只有在函式被呼叫時才會分配記憶體,呼叫結束後,立刻釋放記憶體,所以形參變數只有在函式內部有效,不能在函式外部使用。
2、實參可以是常量、變數、表示式、函式等,無論實參是何種型別的資料,在進行函式呼叫時,它們都必須有確定的值,以便把這些值傳送給形參,所以應該提前用賦值、輸入等辦法使實參獲得確定值。
3、實參和形參在數量上、型別上、順序上必須嚴格一致,否則會發生“型別不匹配”的錯誤。當然,如果能夠進行自動型別轉換,或者進行了強制型別轉換,那麼實參型別也可以不同於形參型別。
4、函式呼叫中發生的資料傳遞是單向的,只能把實參的值傳遞給形參,而不能把形參的值反向地傳遞給實參;換句話說,一旦完成資料的傳遞,實參和形參就再也沒有瓜葛了,所以,在函式呼叫過程中,形參的值發生改變並不會影響實參。
擴充套件資料
函式呼叫的本質:
在執行呼叫一個函式:本質就是透過call指令呼叫函式在程式碼段的地址進行直接呼叫。在彙編指令可以看到當函式執行完畢,執行ret彙編指令退出函式。其實一個完整的函式呼叫必定包含call和ret指令。
函式分類:
1、從使用者使用的角度看,函式有兩種,分別為系統函式和使用者自己定義的函式。系統函式又稱庫函式,是由編譯系統提供的,使用者不必自己定義這些函式,可以直接使用它們;使用者自己定義的函式是用於解決使用者的專門需要。
注:庫函式在使用時程式中必須包含相應的標頭檔案,如,#include《iostream》等。
2、從函式的形式看,函式又分為無參函式和有參函式。無參函式呼叫時不必給出引數,有參函式呼叫時要給出引數,在主調函式和被調函式之間有資料傳遞。