2つの結果を返す関数?

 

1つの関数から 2つの結果を返す必要があります。 それらを分離して、必要な結果ごとに1つの関数を作成することができますが、コードが多くなり、他のことがより複雑になります。 これはMT4で可能ですか?

 

パラメータを NYリファレンスで渡すことを確認する。

int res1 func(int& res2, その他のパラメータ...)

 

基本的に関数を 2回実行し、特別なパラメータを渡して毎回異なる結果を得るということでしょうか?そうかもしれませんね...。

でも、これだけできればいいんですけどね。

return(a,b);
 

no,

int x;

int y=func(x,その他のパラメータ);

呼び出し後 x=5、y=2。

int res1 func(int& res2, その他のパラメータ...)

{

res2=5

return(3);

 

つまり、y=3

 

助けてくれてありがとうございます。 これを行う完全にコード化された関数が あれば、ここにコピーして貼り付けることができますか?

 

結果は "3 "のように1つだけです。

return(3);

?

 

パラメータを参照渡しする方法については、ML4のヘルプを参照してください。

一般に参照渡しとは、実際の変数を外部から関数に 渡し(&を使用)、関数内でその変数の値を変更し、呼び出しから戻ってきたときにその変数がまだ残っていることを意味します。

例えば、int x の値を 0 に設定します。

関数内部で x=5 に設定

関数内部で x=5 を設定し、関数から戻ったときに x=5 が設定されているので、2つの結果を返すことなく2つ目の結果を返したことになります。

関数は2つの結果を返すことはなく、1つの結果しか返しません。

 

OK、ありがとう、irusoh1

 

irusoh1の説明で抜けているのは、変数がArray(s)である必要があることです。そして、returnは配列に値を入れる/変更する役割を果たすのではなく、必要に応じて直接変更する必要があります。

int Xarray[]; int Yarray[];

void Fun2result(int& Array[], int& Brray[], int pos)
{    Array[pos] = 2 + pos;
     Brray[pos] = 5 + pos;
} 
int start()
{  
    for(i=Bars-1; i>=0; i--)
       Fun2result(Xarray, Yarray, i); 
}

がんばってください。

 

は配列である必要はありません。

理由: