Что значит while (p)? (p - указатель на первый элемент строки стиля C) - PullRequest
0 голосов
/ 24 марта 2020
#include <iostream>

int main(void) {
    char* c = "Hello World!";
    char* p = c;
    while (p && *p) {
        std::cout << *p << std::endl;
        ++p;
    }

    return 0;
}

Посмотрите на вышесказанное.

Это пример короткого кода в упражнении C ++.

Я могу понять , а (* p) , который означает l oop до тех пор, пока не будет достигнут последний символ ('\ 0') .

Но я не могу понять пока (p) .

Что значит while (p)? (p - указатель на первый элемент строки стиля C)

Ответы [ 2 ]

2 голосов
/ 24 марта 2020

Убедитесь, что сам указатель не является нулевым - что может быть полезно, если используется в функции, а p является аргументом.

В этом примере это бесполезно, поскольку p с тех пор никогда не может быть нулевым.

1 голос
/ 24 марта 2020

Часть while (p) гарантирует, что значение p отлично от нуля, а while (*p) проверяет, чтобы убедиться, что разыменованное значение p не равно нулю.

Поэтому, если Сама строка (указатель на нее) p не равна нулю, и ее текущий символ *p не равен '\0', будет выполнен блок while l oop.

...