我认为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?
答案 0 :(得分:6)
指针解除引用是否为有效条件?
在C和C ++中,任何可以在给定上下文中转换为bool
的表达式都可以用作循环或条件语句中的有效条件。表达式*foo
生成的类型为char
,可转换为bool
。
什么时候返回false?
当表达式求值为零时。所有其他值均视为true
。
何时指向
NULL
?
foo
是char*
,因此当false
为*foo
时,条件会变为'\0'