C のポインターから配列のサイズを取得する
C で配列を扱うときの一般的なタスクの 1 つは、配列のサイズまたは数を決定することです。配列内の要素。ただし、ポインタを介して配列にアクセスする場合、これは難しい場合があります。
ポインタからの配列サイズの決定に関する問題
次の関数ヘッダーを考慮してください:
int largest(int *list, int highest_index);
この関数は、整数の配列内の最大の整数を返すように設計されています。この問題は、ポインタを使用して 'list' 配列内の要素の数を決定しようとしたときに発生します。
間違ったメソッド
試行されたいくつかの間違ったメソッドには次のようなものがあります。
int i = sizeof list/sizeof(int); //returns incorrect value int i = list.size(); // does not compile
これらのメソッドは、配列が本質的に認識されていると想定しているため、不正な値を返すか、コンパイルされません。 pointer.
正しいアプローチ: 配列サイズを引数として渡す
正しいアプローチは、配列サイズを追加の引数として関数に渡すことです。これにより、関数は配列内の要素の数を決定できるようになります。
例:
static const size_t ArraySize = 5; int array[ArraySize]; func(array, ArraySize);
この例では、関数 'func' は配列ポインターと配列サイズを次のように受け取ります。 argument.
根拠
C では配列を次のように減衰できます。関数の引数として渡されるときのポインタ。ただし、ポインター自体には配列サイズに関する情報は含まれません。配列のサイズを引数として渡すことにより、関数は配列内の要素の数を正確に決定できます。
結論
ポインターを介して配列を操作する場合、ポインターには配列サイズに関する固有の情報がないことを考慮することが重要です。解決策は、配列サイズを追加の引数として、この情報を必要とする関数に渡すことです。
以上がポインターを使用する場合、C で配列のサイズを取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。