C 関数パラメータでの配列サイズの決定
main 関数とは異なり、関数の引数として渡される配列のサイズを決定しますC で sizeof() を使用するには、参照テンプレートが必要です。これは、配列が関数に渡されるとポインターに減衰するためです。
配列はポインターに減衰
次のコード スニペットを考えてみましょう。
int length_of_array(int some_list[]);
にもかかわらず角括弧で囲まれた宣言では、引数として渡されると、some_list が整数ポインター int* に減衰します。結果として、sizeof(some_list) は配列のサイズではなく、ポインターのサイズを返します。
リファレンス テンプレート ソリューション
配列のサイズを正しく決定するには、次のようにします。参照テンプレートを使用します。例:
template<size_t N> int length_of_array(int (&arr)[N]) { std::cout << N << std::endl; // Outputs the correct array size return N; }
例外: 多次元配列
配列の減衰ルールには例外が 1 つあります。多次元配列はその次元性を保持し、ポインターとして渡されません。したがって、sizeof() を直接使用してサイズを決定できます:
int a[3][4]; std::cout << sizeof(a) / sizeof(a[0]); // Output: 4 (number of columns)
以上がC で関数の引数として渡される配列のサイズを決定するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。