我有一个关于定位索引的问题。
假设我在数组中有一个“相对”索引(使用 malloc 分配),或者基本上是一个不告诉我我实际位置的索引。我怎样才能找到“绝对”指数? 我正在尝试使用二进制搜索来定位数组中的数字,但我还需要索引,当我使用递归执行此操作时,我丢失了实际索引。
我在想,因为它是一个数组,也许我可以减去 sized 之类的东西(假设它是一个整数数组)来计算我从一开始就走了多少步,但我不太清楚。你能帮我吗?
最佳答案
假设相对索引是指数组内的指针,您可以使用指针算法获得它的偏移量:
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 、字符、结构或任何其他元素,减法的结果不会改变。不过,ptr
和 array
的指针类型需要匹配。
关于c - C编程中的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14419383/