C++ 数组指针算术问题

C++ 数组指针算术问题,c++,c,arrays,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 stag

有没有办法确定指针在数组中的位置

假设我们已经做到了这一点:

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.

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

是:

ptrdiff_t index = pInt - nNums;
当减去指向数组元素的指针时,与减去下标相同


< > > <代码> > pTrDeFifft < /C> >定义在<代码> <代码>(C++中应该是代码> STD::pTrDeffytt 和)。

< P>是的。您采用以下值:

pInt - nNums

如果我理解你的问题(不太清楚)

然后

将告诉你从nNums pIint开始有多远。如果

int* pInt=nNum[4];
你是说

int* pInt=nNums+4;
然后在

int offset=pInt-nNums
偏移量将是4,所以您可以

int value=nNums[offset] 
这和

int value=*pInt
而且

int*pInt=nNums[4]
可能不是您想要的。它将指向内存,内存地址为
nNums[4]

换成

int* pInt = &nNums[4]; 

对不起,按照目前的措辞,这对我来说毫无意义。
int*pInt=nNums[4]需要
int*pInt=&nNums[4]。很好。伪代码失败。:-)嗯,不是最后一行。您正在将nNums[4]中的值赋给一个未初始化的变量。@JonH,现在nNums[4](int*类型)的地址被赋给一个取消引用的指针(int类型)。类型不匹配。。。。
int value=*pInt
pInt - nNums
int* pInt = &nNums[4];