仮引数

関数に渡されたパラメータはローカルです。有効範囲は関数ブロック内です。仮引数は外部変数や関数の中で定義されたローカル変数とは違う名称を持つ必要があります。関数ブロック内では仮引数に値を代入することが出来ます。仮引数が const 修飾子と宣言された場合、その値は関数内で変更することは出来ません。

例:

void func(const int & x[], double y, bool z)
 {
  if(y>0.0 && !z)
    Print(x[0]);
  ...
 }

仮引数は定数で初期化出来ます。この場合には、初期化値が初期値と見なされます。横にあるパラメータも初期化する必要があります。

例:

void func(int x, double y = 0.0, bool z = true)
 {
  ...
 }

このような関数を呼び出す時には初期化されたパラメータを省略することが出来ます。その場合、デフォルトが使用されます。

例:

func(123, 0.5);

基本データ型 のパラメータは値で渡されます。この型に対応するローカル変数の関数内での変更は呼び出し元の関数には反映されません。任意の型と構造型のデータの配列は、常に参照によって渡されます。配列や構造体の内容を変更することを禁止する必要がある場合には、これらの型のパラメータは const キーワードと宣言されるべきです。

基本データ型のパラメータを参照によって渡すことも出来ます。この場合、呼び出し元の関数内でのパラメータの変更は、参照によって渡された変数にも影響を与えます。パラメータが参照によって渡されることを示すには、データ型の後に &修飾子が置かれます。

例:

void func(int& x, double& y, double & z[])
 {
  double calculated_tp;
  ...
  for(int i=0; i<OrdersTotal(); i++)
    {
    if(i==ArraySize(z))       break;
    if(OrderSelect(i)==false) break;
     z[i]=OrderOpenPrice();
    }
  x=i;
  y=calculated_tp;
 }

参照によって渡されたパラメータは、初期値で初期化することは出来ません。

関数には最大 64 のパラメータが渡されることが出来ます。

参照

入力変数データ型型のカプセル化と拡張性変数の初期化変数のアクセス権スコープとライフタイムオブジェクトの作成と解徐