将指针解除引用作为for循环条件?

时间:2014-07-15 14:45:01

标签: c++ for-loop

我认为for循环必须包含:for(init; condition; increment) 现在我遇到了这段代码:

char *foo, *bar;
char* data = getData();

for (foo = data; *foo; foo = bar + 1) {
        for (bar = foo; *bar; ++bar) {
         if (bar >= &data[1024]) { 
           printf("error\n");           
         }
        printf("%s\n", foo);
}

指针解除引用是否有效?如果是这样,它什么时候返回false?当它指向NULL?

1 个答案:

答案 0 :(得分:6)

  

指针解除引用是否为有效条件?

在C和C ++中,任何可以在给定上下文中转换为bool的表达式都可以用作循环或条件语句中的有效条件。表达式*foo生成的类型为char,可转换为bool

  

什么时候返回false?

当表达式求值为零时。所有其他值均视为true

  

何时指向NULL

foochar*,因此当false*foo时,条件会变为'\0'