C 預設引數

2021-05-24 21:32:27 字數 937 閱讀 3240

一、預設引數

在c++中,可以為引數指定預設值。在函式呼叫時沒有指定與形參相對應的實參時, 就自動使用預設引數。

預設引數的語法與使用:

(1)在函式宣告或定義時,直接對引數賦值。這就是預設引數;

(2)在函式呼叫時,省略部分或全部引數。這時可以用預設引數來代替。

注意:(1)預設引數只可在函式宣告中設定一次。只有在無函式宣告時,才可以在函式定義中設定。

(2)預設引數定義的順序為自右到左。即如果乙個引數設定了預設值時,其右邊的引數都要有預設值。

如:int mal(int a, int b=3, int c=6, int d=8) //正確,按從右到左順序設定預設值。

int mal(int a=6, int b=3, int c=5, int d) //錯誤,未按照從右到左設定預設值。c設定預設值了,而其右邊的d沒有預設值。

(3)預設引數呼叫時,則遵循引數呼叫順序,自左到右逐個呼叫。這一點要與第(2)分清楚,不要混淆。

如:void mal(int a, int b=3, int c=5); //預設引數

mal(3, 8, 9 ); //呼叫時有指定引數,則不使用預設引數

mal(3, 5); //呼叫時只指定兩個引數,按從左到右順序呼叫,相當於mal(3,5,5);

mal(3); //呼叫時只指定1個引數,按從左到右順序呼叫,相當於mal(5,3,5);

mal( ); //錯誤,因為a沒有預設值

mal(3, , 9) //錯誤,應按從左到右順序逐個呼叫

再如:void mal(int a=8, int b=3, int c=5); //預設引數

mal( ); //正確,呼叫所有預設引數,相當於mal(8,3,5);

(4)預設值可以是全域性變數、全域性常量,甚至是乙個函式。但不可以是區域性變數。因為預設引數的呼叫是在編譯時確定的,而區域性變數位置與預設值在編譯時無法確定。

C 預設引數

函式的預設引數值,即在定義引數的時候同時給它乙個初始值。在呼叫函式的時候,我們可以省略含有預設值的引數。也就是說,如果使用者指定了引數值,則使用使用者指定的值,否則使用預設引數的值。void func int i 1,float f 2.0f,double d 3.0 int main void 引...

C 預設引數

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

C 預設引數

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