函式的預設引數

2021-08-03 19:28:55 字數 1777 閱讀 2573

預設引數指的是當函式呼叫中省略了實參時,自動使用的乙個值

例如,如果將函式 void wow(int n) 設定成 n 預設值為1,則呼叫函式 wow ( ) 相當於 wow(1)

1.如何設定預設值?必須通過函式原型。例如,函式 left ( ) 的原型如下,此函式輸入乙個字串,並返回字串的前 n 個字元:

char* left( const

char* str ,int n=1);

由於該函式返回乙個新的字串,所以其返回值型別為 char* ;希望輸入乙個字串而不希望改變它,所以使用 const 限定符;同時,希望函式預設返回第乙個字元,所以將預設值設定為1,即省略n這個引數時,它的值是1,否則傳遞的 n 值會將1覆蓋;

2.對於帶引數列表的函式,設定預設值時,必須從右到左新增預設值,也就是說,要為某乙個引數設定預設值,必須為它右邊的所有引數提供預設值。例如:

int harpo(int i=1, int m=2, int j=3); // valid

int harpo(int i=1, int m, int j); // invalid

harpo原型允許呼叫該函式時提供 0個,1個,2個或3個 引數;

3.實參按照從左到右的順序被賦給形參,而不能跳過任何引數。

例如

b=harpo(1, ,3); // invalid
4.注意:只有原型指定了預設值,函式定義部分與沒有預設引數時完全相同。下面栗子意思是,編寫乙個函式實現功能:列印指定字串的前 n 個字元。

#include 

#include

const

int max=20;

using

namespace

std;

char* left(const

char* str ,int n=1);

int main()

char* left(const

char* str ,int n)

int m,i;

//設定字串長度的方法1

int len=strlen(str);

m=(nchar* pt=new

char [m+1];

//設定字串長度的方法2

/* for(m=0;mfor (i=0;iwhile (i<=m)

return pt;

}

輸入n=1為預設引數時,輸出結果:

輸入n=0時,輸出結果空字串:

輸入n=4,4大於指定字串的字元數目時,輸出結果字串是其本身:

輸入n=2,輸出結果字串是其前2個字元:

此程式值得注意的是:設定字串的方法:本例中提供了兩種方法。

C (帶有預設引數的函式引數)預設函式引數

預設引數?在c 中,允許實參的個數與形參的個數不同。在宣告函式原型時,為乙個或者多個形參指定預設值,以後呼叫這個函式時,若省略某乙個實參,c 則自動的以預設值作為相應引數的值。實列說明 includeusing namespace std int add int x 4,int y 7 int ma...

函式的預設引數

c 中只能定義一次預設值,即原型說明時定義了預設值,後面的函式定義不能有預設值,且預設引數都必須是從右到左定義,呼叫時實參對形參的初始化必須是從左向右的 比如 函式宣告f int i 5 定義了預設值。後面對f的函式定義時就不需要提供預設值了 f int i 即函式定義不能寫成 f int i 5 ...

函式的預設引數

c 在宣告函式原型的時候,可以為乙個或多個引數指定預設引數值,當函式呼叫的時候,如果沒有指定這個值,編譯器會自動用預設值替代。void fun int a 1,int b 2 int main 注意點 1.void fun int a,int b 1,int c 2 若形參b是預設引數,那麼形參c必...