2

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

4

2 回答 2

3

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

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

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

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

于 2013-05-30T17:31:23.200 回答
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

于 2013-05-30T17:30:39.860 回答