C 學習筆記之預設實參

2021-08-14 17:32:54 字數 947 閱讀 5596

//所有形參有預設值

int fun(int a=1,int b=2,int c=3)

//部分形參有預設值

int fun(int a,int b=2,int c=3)

可以所有函式形參都賦予預設值,也可以只部分賦予,但是,一旦某個形參被賦予了預設值,它後面的所有形參都必須有預設值。

一般來說,函式只宣告一次,但實際上函式多次宣告是合法的,要注意的是,在某個作用域中乙個形參只能被賦予一次預設實參。函式的後續宣告只能為之前沒有預設值的形參新增預設實參,而且如上面所述,該形參右側所有形參都要有預設值。

int fun(int a,int b,int c=1);

int fun(int a,int b,int c=1);//錯誤,重複宣告

int fun(int a,int b,int c=2);//錯誤,重複宣告

int fun(int a,int b=2,int c);//正確,新增預設實參

//實際上是宣告了乙個函式:

int fun(int a,int b=2,int c=1);

1. 表示式或函式可以作為預設實參。

int tmp1=1;

int tmp2=2;

int getval()

void fun(int a=getval(),int b=tmp1,int c=tmp2);

2. 區域性變數不能作為預設實參。

//接上面的**

void fun1()

函式fun1內部改變了tmp1的值,所以fun的呼叫會傳遞這個更新的值。

宣告的區域性變數隱藏了外層的tmp2,但是這個區域性變數跟傳遞給fun的預設實參沒有關係。

c 預設實參

最近在看關於函式的一部分,其中有這兩句話很吸引我,一是 既可以在函式宣告中也可以在函式定義中指定預設實參,但是在乙個檔案中,只能為乙個形參指定預設實參一次 二是 如果在函式定義的形參表中提供預設實參,那麼只有在包含該函式定義的原始檔中呼叫該函式時,預設實參才是有效的。細細一想才明白這句話的含義,於是...

C 預設實參

預設實參就是函式裡引數的預設值,但是c 使用預設實參也不是隨意的,需要遵守一定的順序規則。void set string name niulei int age 24,string man 通過這就是預設實參 void set string name niulei int age,string ma...

c 預設實參 zz

預設實參是一種雖然並不普遍 但在多數情況下仍然適用的實參值。呼叫函式時,可以省略有預設值的實參。編譯器會為我們省略的實參提供預設值。預設實參是通過給形參表中的形參提供明確的初始值來指定的。程式設計師可為乙個或多個形參定義預設值。但是,如果有乙個形參具有預設實參,那麼,它後面所有的形參都必須有預設實參...