循环的指针有效条件?

时间:2014-09-09 19:52:03

标签: c++ loops for-loop

有人可以仔细解释,为什么在这种情况下循环重复10次?

#include <iostream>
using namespace std;
int main(){ 
    int length=-1;
    char s[]="Bad or nice";//10 characters 

    for ( char *q = s; *q; ++q ){
    cout << *q;
    length++;
    }

    cout << "\n" << length;

return 0;
}

2 个答案:

答案 0 :(得分:4)

字符串中的总字符数为11,不包括\0。当for指向字符串*q的最后一个字符false时,第二个q表达式s变为\0
因此,循环重复11次。您收到10输出,因为您使用length初始化了-1

答案 1 :(得分:2)

条件是指针(*q)的内存位置的值。

因此,当到达NULL字符(在字符串的末尾)时,循环终止,该字符被评估为false。