計算機概論:C/C++程式設計
|
第6章 模組化的程式設計基礎:函式 |
|
|
授課教師:陳慶瀚 WWW : http://www.miat.ee.isu.edu.tw/cpp E-mail : pierre@isu.edu.tw |
|
6.4 函式的參數傳遞
傳遞參數(parameter)的作用是將資料由外部傳入函式。傳遞參數有時候也稱為引數(argument),它們是溝通主程式和函式的橋樑,他將資料由主程式攜帶至函式,交由函式內部的陳述處理。
函式的傳遞參數是以參數列(parameters list)的方式宣告,每個參數宣告就如同一般的變數宣告一樣,其型別可以是int, float, char或其它資料型別。至於參數數目可以是任意的,函式可以不攜帶任何傳遞參數,譬如一個用來顯示固定訊息的函式就不需要傳遞參數。有些函數傳遞一個參數,有些則傳遞兩個以上的參數,例如範例程式5-1 getMax(int x, int
y)就有兩個傳遞參數x和y,這個函式的目的在於決定x和y兩者之中的最大值。 對於使用函式的程式設計者來說,他只要將兩個整數值(例如5和15)傳入該函式,就可以得到傳回值(15),而無須考慮函式內部的運算細節。這就是模組化設計最顯而易見的好處。
當函式被呼叫時,對應參數列的每一個參數值將傳入函式中,參數值的排列順序、參數值的資料型別必須與函式宣告時所指定的相同才可以。例如有一個函式宣告如下:
void
abc(int a, float b, char c);
呼叫這個函式的一個例子:
abc(34,
4.56, 'x');
注意這個例子中,34, 4.56, 'x'這三個參數值分別對應到int, float和char三個資料型別和排列順序。
宣告參數列再宣告時可以同時指定其初值,例如:
void
abc(int a, float b=4.2, char c='y');
當這個程式被呼叫時,如果b或c兩個參數值未被指定,則函式將自動採用4.2和'y'作為b或c兩個參數的預設值,如果使用者在呼叫時同時給定兩個新值,則原先的預設值4.2和'y'就被覆蓋而沒有作用。例如下列幾種呼叫函式abc()的方式都是被允許的。
abc(10); //傳入a=10, b,c則使用預設值
abc(10, 5.4, 'n'); //傳入a,b,c,覆蓋預設值b,c
abc(10, 5.4); //傳入a,b,覆蓋預設值b,使用預設值c
使用這種同時指定初值的函式宣告方式需注意一個細節:如果一個參數列中,有些參數有指定初值,其它參數則未指定初值,那就需要把帶有初值的參數宣告在後面,而不能宣告在沒有初值的參數前面,例如下列宣告就是不合法的:
void
abc(int a=10, float b, char c='y'); //不合法的宣告
|
||
計算機概論:C/C++程式設計 義守大學電機系 陳慶瀚 |