C 函式引數的預設值

2021-06-16 10:29:13 字數 831 閱讀 7202

我們可以賦予函式引數預設值。所謂預設值就是在呼叫時,可以不寫某些引數的值,編譯器會自動把預設值傳遞給呼叫語句中。

關於預設值要注意幾點:

1.我們通常是將預設值的設定放在宣告中而不是定義中。

2.不能將實際值傳遞給引用型別的引數。可以將變數作引用型別引數的預設值,這時變數必須是已經宣告且是全域性變數。

宣告函式時,要將類或結構中定義 的靜態成員變數作為預設值,若該類或結構還未建立例項,那要在此靜態成員變數前加上作用域操作符(::)。

若已宣告了類或結構的例項,則引用其成員變數作為函式引數的預設值,就要在變數前加上例項名和成員操作符(.)。

3.若給某一引數設定了預設值,那麼在參數列中其後所有的引數都必須也設定預設值,否則,由於函式呼叫時可不列出已設定預設值的引數,編譯器無法判斷在呼叫時是否有引數遺漏。

4.在呼叫時,若給已經設定預設值的引數傳遞實際值,既要取代預設值,則在參數列中被取代引數的左邊所定義的所有引數,無論是否有預設值,都必須傳遞實際引數。

這也是因為函式呼叫時可不列出已設定預設值的引數。假若被取代引數的左邊既有設定了預設值的引數也有未設定預設值的引數,若不對其左邊的所有引數傳遞實際引數,編譯器也就無法分辨傳遞的這個取代值到底要傳遞給哪個引數。

例如有以下函式宣告:

int functionone(int x,int y=0,int z=0,int w=0);

我們要給z 傳遞整型值8,作如下呼叫:

functionone(8);

顯然,編譯器無法確定這個8 到底要傳遞給哪個引數。為了達到我們的目的,必須這樣呼叫:

functionone(0,0,8);

這是x 被傳遞了0,y 被傳遞了 0,z 被傳遞了8

C 函式引數預設值

函式引數在有預設值時,如果呼叫時沒有傳參,則預設push預設值。例項一 不帶預設值 include using namespace std intfun int a,int b,int c int main intfun int a,int b,int c 例項二 函式宣告與定義衝突 函式的預設值在...

C 函式引數的預設值

乙個函式引數 可以指定乙個預設的值 呼叫函式時 如果不對這個引數傳入值則使用預設值,如果對這個引數傳入值 則使用傳入的值。include using namespace std int getmax int x 0,int y 1 函式宣告與實現分離,在函式宣告中指定預設值,不要在實現中指定 int...

函式(引數,預設值)

js定義函式引數沒有非常嚴格的要求,可以有也可以沒有,在呼叫的時候也是,引數可以有可以沒有,也可以和定義時的引數個數不一致 沒有給count傳入引數,預設為10 也可以直接在引數中給count賦值 但是特別注意的是不能給count傳入0,因為0與undefined都是false,因此count傳入的...