c++ - 数组指针算术题

标签 c++ c arrays

有没有办法找出指针在数组中的位置?

假设我们已经这样做了:

int nNums[10] = {'11','51','23', ... };   // Some random sequence
int* pInt = &nNums[4];                     // Some index in the sequence.

...

pInt++;      // Assuming we have lost track of the index by this stage.

...

有没有一种方法可以确定数组 pInt 中的哪个元素索引“指向”而无需再次遍历数组?

最佳答案

是的:

ptrdiff_t index = pInt - nNums;

当指向数组元素的指针被减去时,它与减去下标相同。

类型ptrdiff_t<stddef.h> 中定义(在 C++ 中它应该是 std::ptrdiff_t 并且应该使用 <cstddef>)。

关于c++ - 数组指针算术题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2554934/

相关文章:

c++ - Operator() 作为下标 (C++)

c - $1 在 yacc 中意味着什么,我怎样才能得到它的值

c - 增加 int 指针值 - 不起作用

javascript - 回调和操作数组但返回未定义

c - 重新附加到 Linux 中的进程

java - 如何在数组中添加元素?

c++ - 通过在运行时指定键和值数据类型来创建 std::map 实例

c++ - 未定义模板的隐式实例化

C++ 对象指针改变位置

c - 使用 ld 将目标文件链接到二进制文件时出现链接错误