ホームページ >バックエンド開発 >C++ >C 関数に渡される配列のサイズはどのようにして決定しますか?

C 関数に渡される配列のサイズはどのようにして決定しますか?

DDD
DDDオリジナル
2024-11-08 14:38:02848ブラウズ

How Do You Determine the Size of an Array Passed to a C   Function?

C の関数に渡すときの配列サイズの決定

main 関数とは異なり、sizeof() は配列のサイズを直接返します。 、配列を関数に渡す場合は、配列が減衰するため考慮する必要があります。 pointers.

配列はポインターに減衰します

引数として渡されると、配列は最初の要素へのポインターに減衰します。これは、関数内の式 sizeof(some_list) が配列全体のサイズではなく、ポインターのサイズを与えることを意味します。

Sizeof Ratio 問題

の使用配列サイズを計算する式 (sizeof(some_list)/sizeof(*some_list)) が機能しない

  • sizeof(some_list) はポインターのサイズを返します。通常は 4 バイト (32 ビット システムの場合)。
  • sizeof(*some_list) はポインターのサイズを返します。個々の配列要素。通常、整数の場合は 4 バイトです。

この比率は常に次のようになります。配列のサイズに関係なく、1。したがって、関数 length_of_array は常に 1 を返します。

テンプレートを使用した代替方法

関数に渡される配列のサイズを正確に決定するには、テンプレートを使用します。

template<size_t N>
int length_of_array(int (&amp;arr)[N])
{
    return N;
}

このアプローチでは、テンプレート パラメーター N を使用して配列のサイズを指定します。このサイズは、関数。

以上がC 関数に渡される配列のサイズはどのようにして決定しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。