Как именно указатель перебирает строку / массив? - PullRequest
0 голосов
/ 28 апреля 2019

Итак, я недавно узнал, что 'char *' является синонимом 'string', и это указывает на первый символ строки, а также на то, что вам нужно знать только адрес первого символа и где строка заканчивается для отображения его содержание. Но я не совсем понимаю, как указатель перебирает строку.

В основном, почему и как этот код:

char *s="Hello";
cout<<s<<endl;

Вывод: "Hello", а не: "H"

1 Ответ

2 голосов
/ 28 апреля 2019

operator<< перегружен для char*, поэтому он может повторять строку с нулевым символом в конце. Он просто начинается с заданного символа и затем выводится в цикле, пока не будет достигнут нулевой терминатор. Например, это делает эквивалент этого:

ostream& operaror<<(ostream &os, const char *str)
{
    while (*str != '\0') {
        os << *str;
        ++str; // <-- moves to next character
    }
    return os;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...