数组元素和指针引用它们

时间:2013-05-30 17:29:25

标签: c++ c

假设我有一个n个元素的数组,并且我有一个指向其中一个元素的指针。仅基于此信息,是否可以找出阵列中元素的位置?

2 个答案:

答案 0 :(得分:3)

如果你确定元素在数组中,那么是的,很简单:

position = the_pointer - the_array;
// or
position = &the_reference - the_array;

如果你不确定该元素是否是数组的一部分,那么这样做可能是未定义的行为。

没有(标准认可的)方法来告诉你有指针或引用的对象是数组的一部分。因此,如果您无法访问数组,或者不确定它是哪个数组,那么您就不幸了。

答案 1 :(得分:0)

如果数组的地址可用,则可以使用指针算法。

int t[3] = { 1, 2, 3 };
int *p = t + x; /* Where `x` is the given offset */

然后:

#include <stddef.h>

ptrdiff_t y = p - t;

接下来,y应该等于x