BnE*_*BnE 4 c++ string pointers c-strings
我试图理解指针在这里是如何工作的.该findTheChar功能搜索str该角色chr.如果chr找到,则返回指向str首次找到字符的指针,否则nullptr(未找到).我的问题是为什么函数打印"llo"而不是"l"?虽然我写的代码main返回"e"而不是"ello"?
#include <iostream>
using namespace std;
const char* findTheChar(const char* str, char chr)
{
while (*str != 0)
{
if (*str == chr)
return str;
str++;
}
return nullptr;
}
int main()
{
char x[6] = "hello";
char* ptr = x;
while (*ptr != 0)
{
if (*ptr == x[1])
cout << *ptr << endl; //returns e
ptr++;
}
cout << findTheChar("hello", 'l') << endl; // returns llo
}
Run Code Online (Sandbox Code Playgroud)
C字符串是由字符终止的字符缓冲区'\0'.传递它们只涉及将指针传递给第一个元素.
所有的库程序都知道它们可以从它们给出的地址开始读取字符,直到它们到达为止'\0'.由于这是怎样operator<<的std::cout设计,它假定你传递一个C-string的起始地址.这是合同.
如果要打印单个字符,则需要取消引用该指针.