在处理一些循环结尾问题的时候,容易碰到的问题,总结了一下。
字符串 abcd
while (*cp++) ; / /循环结束后cp指向的是‘\0’的后一个位置
while (*cp) cp++; // 循环结束后cp指向的是'\0'
链表 a b c d
while (p)
{
// do some thing
p = p->next;
}
遍历到a b c d四个结点,结束p指向NULL
while (p->next)
{
// do some thing
p = p->next;
}
遍历到a b c三个结点,结束p指向d
如果循环中涉及到删除结点的操作,再循环中应判断是否p == NULL
也就是在指向p->next操作前注意p是否为NULL