指针究竟是如何遍历字符串/数组的?
Posted
技术标签:
【中文标题】指针究竟是如何遍历字符串/数组的?【英文标题】:How exactly does a pointer iterate through a string/array? 【发布时间】:2019-04-27 21:58:44 【问题描述】:所以,我最近了解到 'char*' 是 'string' 的同义词,它指向字符串的第一个字符,而且您只需要知道第一个字符的地址,以及在哪里字符串结束显示 它的内容。但我对指针如何遍历字符串感到困惑。
基本上,为什么以及如何编写此代码:
char *s="Hello";
cout<<s<<endl;
输出:"Hello"
而不是:"H"
【问题讨论】:
它使用循环打印字符,直到找到'\0'
字符。
请为您使用的语言添加一个标签(可能是C?)。
char*
NOT 是 C++ 中 string
的同义词。在 C 中也不是,char*
是一个字符数组。它恰好用于通过以 NULL 字符终止来存储字符串
【参考方案1】:
operator<<
为char*
重载,因此它可以迭代以空结尾的字符串。它只是从给定字符开始,然后循环输出,直到到达空终止符。例如,它相当于这样:
ostream& operaror<<(ostream &os, const char *str)
while (*str != '\0')
os << *str;
++str; // <-- moves to next character
return os;
【讨论】:
以上是关于指针究竟是如何遍历字符串/数组的?的主要内容,如果未能解决你的问题,请参考以下文章