【问题标题】: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 字符终止来存储字符串

标签: c++ string pointers


【解决方案1】:

operator&lt;&lt;char* 重载,因此它可以迭代以空结尾的字符串。它只是从给定字符开始,然后循环输出,直到到达空终止符。例如,它相当于这样:

ostream& operaror<<(ostream &os, const char *str)
{
    while (*str != '\0') {
        os << *str;
        ++str; // <-- moves to next character
    }
    return os;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-14
    • 1970-01-01
    • 2011-05-18
    • 2021-05-29
    • 2014-06-16
    • 2020-07-24
    • 2013-06-09
    • 1970-01-01
    相关资源
    最近更新 更多