わかりました、これは簡単な質問だと思いますので、ノックを取りますが、Google や SO で必要なものが見つかりません。ある場所で配列を作成し、別の関数内に入力したいと思います。
関数を定義します。
void someFunction(double results[])
{
for (int i = 0; i<100; ++i)
{
for (int n = 0; n<16; ++n) //note this iteration limit
{
results[n] += i * n;
}
}
}
これは私のコードが行っていることの近似値ですが、オーバーフローや範囲外の問題などに遭遇するべきではありません。私は配列を生成します:
double result[16];
for(int i = 0; i<16; i++)
{
result[i] = -1;
}
それから私はそれを渡したいsomeFunction
someFunction(result);
ブレークポイントを設定してコードをステップ実行すると、入力時にsomeFunction
がresults
と同じアドレスに設定されresult
、値は予想どおり -1.000000 になります。ただし、ループの繰り返しを開始すると、またはresults[n]
に解決されないようで、 に解決されるようです。最終的に、結果の配列にデータを入力する代わりに、値を 1 つ取得するだけです。私は何を間違っていますか?*(results+n)
*(results+n*sizeof(double))
*(results)
EDIT
ああ楽しいです、タイプミスがあります:そうではありませんでしvoid someFunction(double results[])
た。そうだった:
void someFunction(double result[])...
したがって、おそらくこれはスコーピングの問題に変わりつつあります。double result[16]
配列が main.cpp でsomeFunction
定義されていて、main.cpp に含まれる Utils.h ファイルで定義されている場合、変数result
はmain.cpp の配列にsomeFunction
大混乱をもたらしますか?result
編集2:
@gf、新しいプロジェクトでこの問題を再現しようとしている過程で、元のプロジェクトが「魔法のように」機能し始めました。
何も変わっていないので、どう説明したらよいかわかりませんが、私が見たものにはかなり確信があります。この問題についての最初の説明はかなり明確だったので、幻覚だったとは思いません。時間と回答に感謝します...時間を無駄にして申し訳ありません。再発した場合はまた更新しますが、当面は問題ないと思います。再度、感謝します。