C++ 数组元素和指向它们的指针引用

C++ 数组元素和指向它们的指针引用,c++,c,C++,C,假设我有一个由n个元素组成的数组,还有一个指向其中一个元素的指针引用。仅基于此信息是否有可能找到元素在数组中的位置 如果数组的地址可用,则可以使用指针算法 int t[3] = { 1, 2, 3 }; int *p = t + x; /* Where `x` is the given offset */ 然后: #包括 ptrdiff_t y=p-t; 接下来,y应该等于x如果您确定元素在数组中,那么是的,它很简单: position = the_pointer - the_array;

假设我有一个由n个元素组成的数组,还有一个指向其中一个元素的指针引用。仅基于此信息是否有可能找到元素在数组中的位置

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

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

#包括
ptrdiff_t y=p-t;

接下来,
y
应该等于
x

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

position = the_pointer - the_array;
// or
position = &the_reference - the_array;
如果您不确定元素是否是数组的一部分,那么这样做可能是未定义的行为


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

代码胜于雄辩。
position = the_pointer - the_array;
// or
position = &the_reference - the_array;