我看了一下在C语言中使用递归打印字符串反转的以下代码:
void ReversePrint(char *str) { //line 1
if(*str) { //line 2
ReversePrint(str+1); //line 3
putchar(*str); //line 4
}
}
我相对较新于 C 语言,对第二行代码感到困惑。根据我的理解,*str
是解引用指针,并应返回当前位置字符串的值。但是它如何作为条件语句的参数使用(应该期望布尔值吧?)?在第三行中,指针将始终递增到下一个块(4 个字节,因为它是 int 类型)...那么,如果字符串结尾后面的内存块中有数据,这段代码会失败吗?
更新:所以在 C 中没有布尔类型,对吗?条件语句的求值结果为 "false" 如果值为 0,否则为 "true" ?