c程序设计中的索引

c程序设计中的索引,c,arrays,recursion,indexing,C,Arrays,Recursion,Indexing,我有一个关于查找索引的问题 假设我在一个数组中有一个“相对”索引(它是用malloc分配的),或者基本上是一个没有告诉我我到底在哪里的索引。如何找到“绝对”索引? 我试图使用二进制搜索来定位数组中的一个数字,但我也需要索引,当我使用递归时,我会丢失实际的索引 我在想,因为它是一个数组,也许我可以减去Size或其他东西(假设它是一个ints数组),以计算我从一开始就做了多少步,但我不能完全计算出来。你能帮忙吗 假设相对索引是指数组中的指针,则可以使用指针算法获取其偏移量: int *array =

我有一个关于查找索引的问题

假设我在一个数组中有一个“相对”索引(它是用malloc分配的),或者基本上是一个没有告诉我我到底在哪里的索引。如何找到“绝对”索引? 我试图使用二进制搜索来定位数组中的一个数字,但我也需要索引,当我使用递归时,我会丢失实际的索引

我在想,因为它是一个数组,也许我可以减去Size或其他东西(假设它是一个ints数组),以计算我从一开始就做了多少步,但我不能完全计算出来。你能帮忙吗

假设相对索引是指数组中的指针,则可以使用指针算法获取其偏移量:

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或其他任何元素,则减法的结果不会改变。但是,
ptr
array
的指针类型需要匹配。

什么是“绝对索引”?!
a[0]
是相对索引还是绝对索引?在malloc()将地址保存在安全位置(并将该值传递给其他函数)后,绝对索引是指从数组开始的“距离”。相对是指与数组中其他位置的“距离”。如何使用地址获取索引?这正是我想做的。有可能用我们的指针来做这件事吗?类似于“absindex=&array[23]-array”@littlerunaway为什么要这样做?在
23
@JoachimPileborg中已经有了“绝对”索引,这只是如何获取指针的一个示例。因为OP没有给我他的搜索函数的签名,所以我需要在示例中使用一些初始化。@dasblinkenlight我是在评论littlerunaway的评论。@JoachimPileborg啊,我明白了:)