C 預設引數

2021-06-16 22:50:55 字數 1179 閱讀 3666

函式的預設引數值,即在定義引數的時候同時給它乙個初始值。在呼叫函式的時候,我們可以省略含有預設值的引數。也就是說,如果使用者指定了引數值,則使用使用者指定的值,否則使用預設引數的值。

void func(int i = 1, float f = 2.0f, double d = 3.0

)int main(void

)

引數的值也可以是表示式,這樣,表示式將在函式被呼叫的時候求值,比如下面的func函式,第二個引數值是通過函式呼叫得到的,每次呼叫func函式時,該函式都會呼叫getvalue來獲取b的值。

class

test

int func(int a, int b =getvalue())

} ;

下面兩種情況都可以

void func(int i, float f = 2.0f, double d = 3.0

) ;void func(int i, float f, double d = 3.0) ;

但是這樣就不可以

void func(int i, float f = 2.0f, double d) ;
預設引數的連續效能保證編譯器正確的匹配引數。所以可以下這樣乙個結論,如果乙個函式含有預設引數,那麼它的最後乙個引數一定是預設引數。

通常我們都將預設引數放在函式宣告中,因為如果放在函式定義中,那麼將只能在函式定義所在地檔案中呼叫該函式。(為什麼呢?)

.h檔案

class

testclass

;

.cpp檔案

#include "

testclass.h

"void testclass::func(int i = 1, float f = 2.0f, double d = 3.0

)

像上面這樣,只能夠在testclass.cpp中呼叫func函式。豈不是很痛苦?

比如下面兩個過載函式func,乙個只接受乙個引數,而另乙個接受兩個引數,包括乙個預設引數。

class

test

int func(int a, int b = 1

)

} ;

如果像下面這樣呼叫函式

int main(void

)

則編譯器就不知道選擇哪個函式,這就造成了混淆。

C 預設引數

一 預設引數 在c 中,可以為引數指定預設值。在函式呼叫時沒有指定與形參相對應的實參時,就自動使用預設引數。預設引數的語法與使用 1 在函式宣告或定義時,直接對引數賦值。這就是預設引數 2 在函式呼叫時,省略部分或全部引數。這時可以用預設引數來代替。注意 1 預設引數只可在函式宣告中設定一次。只有在...

C 預設引數

概念 在函式宣告或定義的時候給形參乙個預設的引數。這樣在呼叫該函式,如果沒有給實參,函式的這個形參就預設為這個值。使用規則 1 預設值必須從右往左給值 2 預設值必須為常量或全域性變數 const static 普通的 全域性變數 也可以作為預設引數 3 預設引數只能出現在宣告或者定義的一處 4 不...

C 預設引數

c語言不支援給函式引數指定預設值,而c 支援。c 預設引數機制 預設引數是宣告或定義函式時為函式的引數指定乙個預設值。在呼叫該函式時,如果沒有指定實參則採用該預設值,否則使用指定的實參。例如 在test.c中,下面程式會編譯失敗 而在test.cpp中,test.cpp會編譯通過 include v...