2016-06-20 7 views
-1

ImはC++のvoid関数で苦労しました。 void関数は引数として2つの配列を取って、いくつかの演算を行い、両方を返します。しかし、プログラムで呼び出されると、入力として設定された配列は変更されませんでした。C++のvoid関数が読み取られない

この関数はJacobi固有値アルゴリズムを使用しているため、初期行列DとVVを対角ベースで返し、次元を「薄暗くする」必要があります。

jacobi(dim、VV、D);

メイン関数にその行を書き込むとき、DとVVの両方が変更されていません。 DとVVの両方が動的配列(ポインタへのポインタ)として定義されていますが、それはまったく効果がありますか?上記のコマンドは新しいDとVVを返してはいけませんか? void関数の中に "cout"を作成すると、DとVVの両方が操作の下で変更されるように見えますが、main関数から呼び出されたときは変更されません!ありがとう!

+7

実際にコードを記述する代わりに、コードを表示する必要があります –

+4

コードを投稿できますか? – duncan

+4

コードを表示します。おそらく値を返すか、引数を引数として渡すべきでしょう。本物のC++スタイルを使用してください:スマートポインタ、コンテナなど –

答えて

2

明らかに、関数内の他のものにパラメータを割り当てています。

代わりにの参照番号を渡してください。

すなわちA、B、及びCは

jacobi(A& dim, B& VV, C& D)

&に現在特定の種類である機能jacobi(A dim, B VV, C D)を変更する基準を示しています。

+0

ごめんなさい、だが、最終的に関数内のポインタを作成して返すだけで解決できるだろう!とにかく答えに感謝します – user2261553

関連する問題