1

インデックスの検索について質問があります。

配列(mallocで割り当てられた)に「相対」インデックスがある、または基本的に自分が実際にどこにいるかを教えてくれないインデックスがあるとします。「絶対」インデックスを見つけるにはどうすればよいですか?二分探索を使用して配列内の数値を見つけようとしていますが、インデックスも必要です。再帰を使用して実行すると、実際のインデックスが失われます。

配列なので、サイズなどを引いて(ints配列だとしたら)、最初から何ステップ行ったかを把握できるのではないかと考えていましたが、よくわかりません。手伝ってくれますか?

4

1 に答える 1

2

相対インデックスとは配列内のポインターを意味すると仮定すると、ポインター演算を使用してそのオフセットを取得できます。

int *array = malloc(100*sizeof(int));
// Let's say you've got a pointer to an array element somehow,
// through your recursive search or in any other way.
// I'll assign it directly for simplicity:
int *ptr = &array[23];
int absIndex = ptr - array; // This equals 23

コンパイラは配列要素の分割を処理するsizeofため、配列要素がdouble、chars、structsなどの場合、減算の結果は変わりません。ただし、ポインタタイプptrarrayは一致する必要があります。

于 2013-01-19T22:12:52.403 に答える