トップ  >  リファレンス  >  基本  >  関数  >  関数の呼び出し
スポンサーリンク
検索
カスタム検索
リファレンスツリー
オススメ
関数の呼び出し


事前に使われていない名前を書き、その後に小括弧が書かれていた場合、それは関数の名前と判断されます。

書式:
    関数名( 仮引数1, 仮引数2… 仮引数n)




引数(仮引数)は関数に渡される値です。
仮引数1〜仮引数nはそれぞれの式が計算され、その値が関数に渡されます。
式の計算順序と値の読み込み順序は保障されません。
実行中にシステムは関数へ渡った引数の値と型をチェックします。


関数の呼び出しは式です。
そして関数によって値が返されます。
関数の戻り値型と返す値の型は一致しなければなりません。

関数の宣言はグローバルな範囲(外部の他関数)で、プログラムのどんな部分にでも書く事が出来ます。
ただし、他の関数内部で関数を宣言する事は出来ません。
サンプルソース:
int OnInit(){

    double some_array[4]={0.3, 1.4, 2.5, 3.6};
    double tme_double;
    
    tme_double = lin_func( some_array, 10.5, 8);
    Print(tme_double);

    return 0;   
}


double lin_func(double& x[], double a, double b) {
   
    double ret_double;

    ret_double = ( a * x[0] + b);

    return ret_double;
}



void func(void) {
    void func2(void) {          // エラー。関数内で関数宣言は出来ません
    
    }
}


デフォルト値を持つ関数の呼び出しは、渡す引数の値を省略する事が出来ます。
ただし、最初のデフォルト値の前の値(デフォルト値を設定していない値)は省略出来ません。

関数を呼ぶ時、デフォルト値が設定されている引数の一つをスキップさせる事は出来ません。
サンプルソース:
int OnInit(){

    somefunc();                       // 間違った呼び出し。第一引数はデフォルト値を持っていないので省略出来ない
    somefunc(3.14             );      // 正しい呼び出し
    somefunc(3.14 , 0.0002    );      // 正しい呼び出し
    somefunc(3.14 , 0.0002 , 20);     // 正しい呼び出し

    somefunc(3.14 ,        , 10);     // 間違った呼び出し。第二引数がスキップされている

    return 0;   
        
}


void somefunc(double init,           // デフォルト値無し
              double sec   = 0.0001,  // デフォルト値設定
              int    level = 10){     // デフォルト値設定
    Print(init,sec,level);
}  


プログラム内の別の実行コンテキストから同じ名称の関数使用は曖昧さを引き起こす可能性があります。
この場合、関数呼び出しの曖昧さを回避する為に、明示的にスコープ解決演算子を使用して関数スコープを指定します。
スポンサーリンク



Copyright ©2015 MT4でEA自作しちゃお〜 All Rights Reserved.


Top

inserted by FC2 system