人物印刷混乱

aaa*_*aaa -1 c++ sequences character

我有一些代码:

#include <iostream>
#include <string>
using namespace std;
int main(){
    char abc [20] = "Hello Hello Hi";
    char* ptr = abc;
    cout << (abc+3);
return 0;
Run Code Online (Sandbox Code Playgroud)

}

为什么它从第三个字符打印而不仅仅是第三个字符?

- 编辑 - 向谁标记它.它与prinf()不同,但是相同类型的概念.我只是不知道细微差别

And*_*lta 7

要理解为什么,你必须了解一些指针算法.

abc与&abc [0]相同,(abc + 3)与&abc [3]相同

话虽这么说,cout将一个字符串从给定的char*打印到一个空字符.

因此,您基本上只是将从第三个字符开始的字符串打印到字符串的末尾.如果您只想打印第三个字符,可以取消引用指向第三个字符的指针.

 *(abc + 3)
Run Code Online (Sandbox Code Playgroud)