假设我有一个包含 n 个元素的数组,并且我有一个指向其中一个元素的指针引用。仅基于此信息是否可以找出元素在数组中的位置?
user1780800
问问题
64 次
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 回答