我的阵列在哪里?

时间:2014-12-09 10:26:51

标签: c++ c arrays pointers

这是自动生成的C代码,所以请不要介意我通过char指针滚动的方法

我正在使用char指针来存储字符串:

char str[] = "Hello!";
char *ptr = str;

我使用指针算法滚动它:

++ptr;
++ptr;
...
...
--ptr;

我想在某个时候确切知道它指向的是什么索引(例如,“Hello”中的“e”为1)。我该怎么做?

4 个答案:

答案 0 :(得分:11)

足够std::distance(str, ptr)ptr - str

答案 1 :(得分:2)

您可以使用printf或cout和%c打印相应的值,以获得指向的字符。

printf("%c",*p);

如果你想知道这个位置,那么

printf("%td\n",ptr-str);

答案 2 :(得分:0)

只做

   printf("\ndistance[%d]",ptr-str); 

答案 3 :(得分:0)

要回答你的问题,最简单的方法是使用std :: distance。这将返回给定迭代器之间的元素数。在您的情况下,std :: distance(str,ptr)返回str和ptr之间的元素数。假设str指向start并且ptr位于' o',则此API返回的值为4.