c c 函式引數預設值

2021-05-09 02:30:24 字數 562 閱讀 4657

引數預設值只能出現在函式的宣告中,而不能出現在定義體中。

例如:

void foo(int x=0, int y=0);  // 正確,預設值出現在函式的宣告中

void foo(int x=0, int y=0)    // 錯誤,預設值出現在函式的定義體中

為什麼會這樣?我想是有兩個原因:一是函式的實現(定義)本來就與引數是否有預設值無關,所以沒有必要讓預設值出現在函式的定義體中。二是引數的預設值可能會改動,顯然修改函式的宣告比修改函式的定義要方便。

如果函式有多個引數,引數只能從後向前挨個兒預設,否則將導致函式呼叫語句怪模怪樣。

正確的示例如下:

void foo(int x, int y=0, int z=0);

錯誤的示例如下:

void foo(int x=0, int y, int z=0);

可能產生的二義性:

void output( int x);

void output( int x, float y=0.0);

//output(3);//error,產生二義性

c c 函式引數預設值

引數預設值只能出現在函式的宣告中,而不能出現在定義體中。例如 void foo int x 0,int y 0 正確,預設值出現在函式的宣告中 void foo int x 0,int y 0 錯誤,預設值出現在函式的定義體中 為什麼會這樣?我想是有兩個原因 一是函式的實現 定義 本來就與引數是否有...

函式(引數,預設值)

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

函式引數預設值

include 函式預設值為0 intmul int x 0 c語言編譯器會報錯,c 不會 intmain int argc,char ar 預設值不需要在定義時給出,宣告時給出即可 intmul int x 函式預設引數的規則 引數的預設值必須從右向左匹配 函式呼叫時使用了預設值,則後續引數必須使...