C和C 的區別一 帶有預設值的函式

2021-08-19 23:31:55 字數 1231 閱讀 3203

一、帶有預設值的函式(c++合法)

特點一:在函式的宣告或者實現中,只能從右往左給賦值

情況一:int sum(int a,int b = 10);--->合法

情況二:int sum(int a = 10,int b);--->不合法

由於在呼叫函式時sum(.b)這樣呼叫形式不合法;

情況三:int sum(int a,int b = 10);

int sum(int a = 10,int b);

這兩者結合起來合法,由於在編譯時編譯器是從上往下編譯的,當遇到第一條語句時解析到

給引數b賦了預設值,讀到第二條解析到給a賦了預設值;

特點二:在函式宣告和實現時不能多次給引數賦值,即使賦同乙個值也不行;

如**:

特點三:假如我們在函式宣告或者實現時給乙個引數預設值,在呼叫時又引用了的當前檔案中相同引數的

賦值,程式會覆蓋掉預設值,呼叫當前的新值,如下列**所示:

int a = 100;

int b = 200;

int sum(int a = 10, int b = 10)

int main()

void main()

反彙編:

對於帶有預設值的函式,以int sum(int a, int b = 20);為例

**:

int sum(int a, int b = 10)

void main()

反彙編:

第二種帶有預設值的函式與第一種不帶預設值的函式相比較,帶預設值的函式直接將預設給的值直接壓入棧中,不用經過mov先放入暫存器然後壓棧,這兩者相比來說帶有預設值的比不帶預設值的要高效,在這裡呼叫一次函式省去一次mov週期,當呼叫次數較大時,則高效更明顯;

C 函式引數的預設值

我們可以賦予函式引數預設值。所謂預設值就是在呼叫時,可以不寫某些引數的值,編譯器會自動把預設值傳遞給呼叫語句中。關於預設值要注意幾點 1.我們通常是將預設值的設定放在宣告中而不是定義中。2.不能將實際值傳遞給引用型別的引數。可以將變數作引用型別引數的預設值,這時變數必須是已經宣告且是全域性變數。宣告...

C 函式引數的預設值

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

C 帶預設值的函式

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