我遇到了一个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;
}
答案 0 :(得分:8)
当p
为NULL
时,循环将停止。在循环中,您无需显式检查条件p !=NULL
,也无需在C ++ 11中p != nullptr
。
类似的代码也写成了你以空字符结尾的c-string:
char str[] = "its null-terminated string";
for(size_t i = 0 ; str[i] ; ++i)
std::cout << str[i] << std::endl;
在这种情况下,您无需检查条件i < strlen(str)
或类似的内容。
答案 1 :(得分:2)
p
为NULL
或0
时会停止。
当p->prev
未指向其他元素时,会发生这种情况。
答案 2 :(得分:1)
当p指针等于NULL指针
时,它将停止