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

C++ 使用指针获取字符串中字符的位置,c++,C++,我想通过使用strchr搜索字符串中的某个字符,并将其存储到指针*p中,从而获得该字符在字符串中的位置。 例如: char v[] = "abcdefghijklmnopqrstuvwxyz", *p; p = strchr(v, 'c'); 在这个特定场景中,p指针是否会因为c的位置是字符串内部的2而保持值2 否。它提供该位置元素的地址 p-v(两个指针之间的差值)的值为2,并键入std::ptrdiff\u t 类型很重要:它保证有足够的大小来存储两个指针之间的差异。否。它提供该位置元素的

我想通过使用
strchr
搜索字符串中的某个字符,并将其存储到指针
*p
中,从而获得该字符在字符串中的位置。 例如:

char v[] = "abcdefghijklmnopqrstuvwxyz", *p;
p = strchr(v, 'c');
在这个特定场景中,
p
指针是否会因为
c
的位置是字符串内部的2而保持值
2

否。它提供该位置元素的地址

p-v
(两个指针之间的差值)的值为2,并键入
std::ptrdiff\u t

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

否。它提供该位置元素的地址

p-v
(两个指针之间的差值)的值为2,并键入
std::ptrdiff\u t

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

引用:

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

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

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

引用:

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

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

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

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

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

std::cout << p;
返回值:指向str中找到的字符的指针,如果没有,则返回空指针 角色被发现了

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

std::cout << p;

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

像这样:

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

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

像这样:

std::cout << p << std::endl;
std::cout << *p << std::endl;
std::cout << p - v << std::endl;
那怎么会有“oop”标签呢?:)那怎么会有“oop”标签呢?:)