サイズを明示的に指定せずに別の関数に渡すときに配列のサイズを理解することは、C では困難な場合があります。この質問は、引数として配列を受け取る関数内でループを実行する必要があることから生じました。
NULL ポインター値の条件付きチェックを使用する最初のアプローチは、予期しない値が存在する可能性があるため不十分であることが判明しました。
C での効果的な解決策には、テンプレートを活用し、配列を渡すことが含まれます。参照:
template <typename T, int N> void func(T (&a)[N]) { for (int i = 0; i < N; ++i) a[i] = T(); // reset all elements }
配列サイズ N をテンプレート パラメーターとして指定することにより、関数は操作している正確な配列サイズを認識します。このアプローチにより、意図した数の要素に対してループが確実に反復されます。
このテンプレート関数を利用するには、次のように配列を渡すことができます。
int x[10]; func(x);
このアプローチは配列に対してのみ機能し、ポインターに対しては機能しないことに注意することが重要です。より汎用性の高いソリューションを実現するには、std::vector などの標準ライブラリ コンテナを使用することをお勧めします。
以上がC で関数の引数として渡される配列のサイズを決定するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。