関数からの C 配列の戻り
C で配列を操作する場合、組み込み配列によって課される制限を理解することが重要です。この記事では、関数から配列を返す問題を検討し、標準ライブラリ コンテナを使用した代替アプローチを提供します。
問題:
ユーザーは、配列を関数に組み込み、関数内で操作して、変更された配列を返します。ただし、ユーザーはポインタと、このタスクに効果的にアプローチする方法を理解することが困難になります。
解決策:
関数からの組み込み配列を返すことは C ではサポートされていません。代わりに、動的配列、またはベクトルや boost::array などの標準ライブラリ コンテナを利用する必要があります。
代替アプローチ:
1.標準ベクトル:
std::vector
std::vector<int> myfunction(const std::vector<int>& my_array) { // Modify vector return my_array; }
2。 Boost::array:
固定サイズの配列が必要な場合は、boost::array がこの機能を提供します。ベクトルと同様に、関数内で配列を変更してそれを返すことができます。
boost::array<int, 2> myfunction(const boost::array<int, 2>& my_array) { // Modify array return my_array; }
注: 元の質問で提供されたコードにはバグがあることに注意してください。配列 my_array は 1 つの要素を持つように定義されていますが、2 つの要素でアクセスされます。配列はインデックス 0 から始まり、インデックス N-1.
まで拡張されるため、これは範囲外エラーです。以上がC 関数から変更された配列を返すにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。