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

C で関数の引数として渡される配列のサイズを決定するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-11-09 10:36:02640ブラウズ

How to Determine the Size of an Array Passed as a Function Argument in C  ?

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 (&amp;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 サイトの他の関連記事を参照してください。

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