C 形參帶預設值的函式

2021-10-09 12:37:35 字數 1788 閱讀 2703

#include

intsum

(int a,

int b)

intmain()

sum函式的定義可以有以下幾種:

int

sum(

int a=10,

int b=20)

;sum()

;

int

sum(

int a,

int b=20)

;sum

(a);

但是int sum(int a,int b=20) ;不可以編譯通過,原因是函式壓棧是從右向左入棧,給預設值的時候從右向左給。

各函式呼叫

int

sum(

int a=10,

int b=10)

intmain()

呼叫形參帶預設值的函式與普通函式的效率有沒有提公升?

答案是 有, 但個別情況效率會和原來一樣,但效率不會降低。

int ret =

sum(a,b)

;//mov eax,dword ptr[ebp-8]

//push eax

//mov ecx,dword ptr[ebp-4]

//push ecx

//call sum

當給出預設值時

int ret =

sum(a,40)

;//push 28h

//mov ecx,dword ptr[ebp-4]

//push ecx

//call sum

可以明顯觀察到第二段**相比於第一段**少執行了一條mov指令,效率自然有所提高。

函式預設值可以在那些位置給出?

1,宣告時給形參預設值

2,定義時給形參預設值

形參給預設值時,可不可以重複給?或者說多次給,給相同的預設值會怎麼樣?

相同預設值時

不同時

所以說,形參給預設值時,不管是定義出給,還是宣告處給,形參預設值只能出現一次,就算預設值相同也不可以。

編譯器執行**時是自上而下依次執行的,給預設值時是自右向左給的,所以初始化預設值是下邊的這種形式也是可以的。

總結:

形參帶預設值的函式

1,給預設值時,自右向左給;

2,呼叫形參帶預設值的函式與普通函式的效率有提公升,但個別情況效率會和原來一樣,但效率不會降低;

3,定義處和宣告處都可以給形參預設值;

4,形參給預設值時,不管是定義出給,還是宣告處給,形參預設值只能出現一次,就算預設值相同也不可以。

C 3 形參帶預設值的函式和內聯函式

形參帶預設值得函式,在呼叫的時候可以不用傳引數 class base private int b int main 以上是一種引數的情況,當引數有兩個及以上的時候 給預設值的時候必須從右往左給 無論是在定義的時候或者宣告的時候都可以給定形參的預設值,且形參的預設值只能出現一次 int sum int...

C 帶預設值的函式

url 在c 中,往往需要給某些函式的引數指定預設的值,其實這樣的思想並不難理解,這裡只是想說這樣的函式應該如何宣告和定義。比如說希望給函式print int value,int base 的引數base指定乙個預設的引數值10,那麼在.h檔案中宣告時,應該宣告為print int value,in...

帶引數預設值的函式

函式有乙個或多個的引數有預設值 如float area float r 3.5 int sum int a,int b 5,int c 10 int fun int a,int b,int c 9 int fun int a,int b,int c int fun int a,int b,int c...