我希望通过使用strchr
在字符串中搜索该字符并将其存储到指针*p
中来获取字符串中的字符位置。
例如:
char v[] = "abcdefghijklmnopqrstuvwxyz", *p;
p = strchr(v, 'c');
在这种特殊情况下,p
指针是否保持值2
,因为c
的位置在字符串内部是2?
答案 0 :(得分:3)
没有。它为您提供该位置元素的地址。
p - v
(两个指针之间的差异)的值为2,类型 std::ptrdiff_t
。
类型很重要:它保证有足够的大小来存储两个指针之间的差异。
答案 1 :(得分:2)
返回:指向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