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为您处理数组元素的划分,因此如果您的数组元素是双精度数、字符、结构或其他任何内容,则减法的结果不会改变。ptr但是,和的指针类型array需要匹配。

于 2013-01-19T22:12:52.403 回答