c - C编程中的索引

标签 c arrays recursion indexing

我有一个关于定位索引的问题。

假设我在数组中有一个“相对”索引(使用 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 、字符、结构或任何其他元素,减法的结果不会改变。不过,ptrarray 的指针类型需要匹配。

关于c - C编程中的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14419383/

相关文章:

c - if 和 if else 语句有效,但 else 无效

python - 递归与迭代图遍历中的内存利用率

recursion - 编译器用多态递归函数耗尽内存

java - 连接 2 个数组的输出不符合预期

arrays - 将 MonadRandom 与堆栈中的 ST 计算相结合

arrays - 默认值分配中的 Bash 数组值

Javascript 创建 "Dicitonary-like"- 路径列表中的对象

c - 为什么这个 C 程序不能正常运行?

c++ - c和c++中switch语句的case标签的常量值,但显示不同的行为

计算 C 中的行数、单词数、字符数