指针究竟是如何遍历字符串/数组的?

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

ostream& operaror<<(ostream &os, const char *str)

    while (*str != '\0') 
        os << *str;
        ++str; // <-- moves to next character
    
    return os;

【讨论】:

以上是关于指针究竟是如何遍历字符串/数组的?的主要内容,如果未能解决你的问题,请参考以下文章

$ 究竟是如何在 NASM 中工作的?

document.cookie 究竟是如何工作的?

内存数据库究竟是如何发挥内存优势的?

Python 究竟是如何检查列表的?

Javascript 数值比较运算符究竟是如何处理字符串的?

MySql中的varchar长度究竟是字节还是字符