函式的預設引數

2021-09-09 02:57:59 字數 1624 閱讀 4593

函式或過程可以有預設引數default parameters),正如其名稱一樣,如果函式或過程在呼叫時沒有指定引數,它就會為函式提供乙個預設值。

為了宣告乙個有預設值的過程或函式,在引數型別後跟乙個等號和預設值。

下面照慣例,舉乙個比較完整的例子,來實現乙個加法的程式,預設是兩個數相加,但是也能實現三個數相加的功能。

1、

2、在**中輸入以下**,建立乙個addints函式,用來實現數的相加,如下:

program project1;

uses

sysutils;

function addints(i1, i2: integer; i3: integer = 0): integer;

begin

result := i1 + i2 + i3;

end;

var i1, i2, i3: integer;

jg: integer;

begin

i1 := 123;

i2 := 321;

i3 := 555;

jg := addints(i1, i2);

writeln(inttostr(i1) + ' + ' +

inttostr(i2) + ' = ' +

inttostr(jg));

jg := addints(i1, i2, i3);

writeln(inttostr(i1) + ' + ' +

inttostr(i2) + ' + ' +

inttostr(i3) + ' = ' +

inttostr(jg));

readln;

end.

3、執行結果如下:

4、有預設值引數的最大好處是,在向乙個已存在的過程和函式增加功能時,不必關心向後相容的問題,就像上面的addints函式一樣,增加乙個具有預設值的第三個引數,就能把addints函式擴充套件而不必擔心它的相容問題。

note任何預設引數只能放在函式或過程參數列的結尾,下面的**就是乙個無效的函式宣告:

procedure myprocedure(x: integer; y: integer = 10; z: integer);
編譯以上宣告,將會報出「default value required for 『z』」錯誤,如果要想成功編譯這個函式宣告,就必須把預設引數移動到參數列的末尾,如下:

procedure myprocedure(x: integer; z: integer; y: integer = 10);
以上**均在delphi7中測試通過。

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必...