使用指针获取字符串中字符的位置

时间:2017-03-08 15:51:21

标签: c++

我希望通过使用strchr在字符串中搜索该字符并将其存储到指针*p中来获取字符串中的字符位置。 例如:

char v[] = "abcdefghijklmnopqrstuvwxyz", *p;
p = strchr(v, 'c');

在这种特殊情况下,p指针是否保持值2,因为c的位置在字符串内部是2?

4 个答案:

答案 0 :(得分:3)

没有。它为您提供该位置元素的地址

p - v(两个指针之间的差异)的值为2,类型 std::ptrdiff_t

类型很重要:它保证有足够的大小来存储两个指针之间的差异。

答案 1 :(得分:2)

引用documentation

  

返回:指向str中第一次出现的字符的指针。如果   找不到字符,该函数返回一个空指针。

这有点不言自明。它不会返回位置,而是返回地址。

正如@Bathsheba所说,你可以使用指针差来计算字符串中的实际位置。或者改为使用std::distance

答案 2 :(得分:0)

  

返回值:指向str中找到的字符的指针,如果没有则指向空指针   找到了角色。

在您的情况下,p将是指向c的内存位置的指针。

std::cout << p;

<强>输出:

cdefghijklmnopqrstuvwxyz

答案 3 :(得分:0)

由于其他答案表明返回c的地址,快速测试将使其打印出值:

像这样:

std::cout << p << std::endl;
std::cout << *p << std::endl;
std::cout << p - v << std::endl;

您将获得的结果是:

cdefghijklmnopqrstuvwxyz
c
2