函式或過程可以有預設引數(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任何預設引數只能放在函式或過程參數列的結尾,下面的**就是乙個無效的函式宣告:以上**均在delphi7中測試通過。編譯以上宣告,將會報出「default value required for 『z』」錯誤,如果要想成功編譯這個函式宣告,就必須把預設引數移動到參數列的末尾,如下:procedure myprocedure(x: integer; y: integer = 10; z: integer);
procedure myprocedure(x: integer; z: integer; y: integer = 10);
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必...