Что это значит, когда условие остановки цикла for является переменной-указателем? - PullRequest
1 голос
/ 14 марта 2012

Я столкнулся с циклом for, где условием является сам параметр (p).Когда цикл остановится?Я не вижу этого случая в моих книгах по C ++.

for (PDFS *p = e->prev ; p ; p = p->prev) {
    push_back (p->edge);
    edge[p->edge->id] = vertex[p->edge->from] = vertex[p->edge->to] = 1;
}

Ответы [ 3 ]

8 голосов
/ 14 марта 2012

Цикл остановится, когда p будет NULL.В цикле вам не нужно явно проверять условие p !=NULL, или в C ++ 11, p != nullptr.

Аналогичный код также написан с нулевым символом в концестрока:

 char str[] = "its null-terminated string";
 for(size_t i = 0 ; str[i] ;  ++i)
        std::cout << str[i] << std::endl;

В этом случае вам не нужно проверять условие i < strlen(str) или что-то в этом роде.

2 голосов
/ 14 марта 2012

Остановится, когда p будет NULL или 0.

Это произойдет, если p->prev не указывает на другой элемент.

1 голос
/ 14 марта 2012

Остановится, когда указатель p будет равен указателю NULL

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...