C の関数に渡すときの配列サイズの決定
main 関数とは異なり、sizeof() は配列のサイズを直接返します。 、配列を関数に渡す場合は、配列が減衰するため考慮する必要があります。 pointers.
配列はポインターに減衰します
引数として渡されると、配列は最初の要素へのポインターに減衰します。これは、関数内の式 sizeof(some_list) が配列全体のサイズではなく、ポインターのサイズを与えることを意味します。
Sizeof Ratio 問題
の使用配列サイズを計算する式 (sizeof(some_list)/sizeof(*some_list)) が機能しない
この比率は常に次のようになります。配列のサイズに関係なく、1。したがって、関数 length_of_array は常に 1 を返します。
テンプレートを使用した代替方法
関数に渡される配列のサイズを正確に決定するには、テンプレートを使用します。
template<size_t N> int length_of_array(int (&arr)[N]) { return N; }
このアプローチでは、テンプレート パラメーター N を使用して配列のサイズを指定します。このサイズは、関数。
以上がC 関数に渡される配列のサイズはどのようにして決定しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。