虽然(* s) - 这是如何工作的?

时间:2011-10-15 13:27:45

标签: c

这个while循环是如何工作的?当这个* s参数终止时?

void putstr (char *s)  
{   
while (*s) putchar(*s++);  
}

其他值得注意的行为,争论的时间是什么?

6 个答案:

答案 0 :(得分:4)

* s取消引用一个char,在循环中,零(0或'\ 0')将作为false,终止循环,所有其他非零字符保持为true。

答案 1 :(得分:4)

C中的逻辑表达式如果为0则求值为false,否则求值为true。因此,当*s等于0时,循环将终止。在char的上下文中,遇到空终止字符时。

请注意,++的优先级高于指针解除引用*,因此++绑定到指针而不是指向它的char。因此,循环体将为putchar指向的字符调用s,然后递增指针s

答案 2 :(得分:3)

char(*s)被强制转换为int,条件是它保持任何整数!= 0被解释为true,所以当遇到'\0' char时循环和

答案 3 :(得分:1)

因为循环本身修改了s(带有*s++),所以while条件可以在每次循环时检查它,并且当指针指向一个空字符时它最终会终止。 / p>

答案 4 :(得分:1)

while (*s)

虽然s指向的字符不为零(也就是说,如果我们没有到达字符串的末尾)

putchar(*s++);

可以认为是

putchar(*s);      // write the character pointed by s
s += 1;          // go to next one

答案 5 :(得分:0)

s是字符串上的指针 字符串的结尾由0值

检测
相关问题