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

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

Susan Sarandon
Susan Sarandonオリジナル
2024-12-12 10:38:18706ブラウズ

How Can I Determine the Size of a C   Array Passed as a Pointer to a Function?

C でのポインターから配列のサイズを決定する

C で配列を操作する場合、そのサイズを決定することが必要になる場合があります。ただし、配列を関数の引数として渡すと、明示的なサイズ情報が残らずポインターに変換されます。

間違ったアプローチ

  • sizeof list/sizeof(int) : このメソッドは、sizeof 演算子を使用して配列のサイズを決定しようとしますが、配列の実際のサイズではなく int のサイズで除算します。 size.
  • list.size(): このメソッドは int 配列型のメンバー関数ではないため使用できません。

サイズの決定正しく

ポインタから配列のサイズを決定する正しい方法は、サイズを追加として渡すことです。 argument.

int largest(int *list, int highest_index)
{
  // ...
}

この関数を使用するには、配列とそのサイズを引数として渡します。

int array[] = {1, 2, 3, 4, 5};
int size = sizeof(array) / sizeof(int); // Calculate array size
int max = largest(array, size);

配列/ポインタの等価性

C は配列/ポインタの等価性を継承します。 C からのもので、配列が関数に渡されるときにポインターに減衰することができます。この動作は、ポインタにサイズ情報が含まれていないことを意味します。

メモリ レイアウト

配列のメモリ レイアウトを理解することが重要です。配列が宣言されると、その要素を格納するために連続したメモリが割り当てられます。最初の要素へのポインタは配列の始まりを意味しますが、そのサイズに関する情報は含まれません。

結論

C でポインタから配列のサイズを正確に決定するには、次のようにします。配列を処理する関数に追加の引数としてサイズを渡す必要があります。このアプローチにより、関数が必要な情報に確実にアクセスできるようになります。

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

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