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

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

Patricia Arquette
Patricia Arquetteオリジナル
2024-12-22 03:52:12265ブラウズ

How Can I Get the Size of an Array Passed as a Pointer in C  ?

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

C では、ポインターとして渡される配列のサイズを決定するのが難しい場合があります。配列は「配列/ポインタの等価性」を示し、配列が関数の引数として渡されるとポインタに変化する可能性があります。これにより、配列のサイズを正確に決定するという問題が生じます。

この問題を解決するには、sizeof() がポインタの数ではなく、通常 4 バイトまたは 8 バイトのサイズを返すため、これに依存することはできません。配列内の要素。代わりに、追加の引数として配列のサイズを明示的に渡す必要があります。

解決策:

関数ヘッダーを変更して、配列サイズのパラメーターを含めます:

int largest(int *list, size_t size)

配列のサイズをポインタとともに渡します。 function:

static const size_t ArraySize = 5;
int array[ArraySize];
int result = largest(array, ArraySize);

サイズを明示的に渡すことにより、関数は配列内の要素の数を適切に決定できます。

代替アプローチ:

元の配列変数ではなく、配列へのポインタのみがある場合は、次を使用してサイズを計算できます。式:

size = sizeof(pointer_variable) / sizeof(array_element_type)

たとえば、サイズが不明な整数の配列へのポインター int *ptr がある場合、次のようにサイズを決定できます。

size = sizeof(ptr) / sizeof(int);

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

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