*a 和 *a!='\0'有什么区别,
来源:学生作业帮 编辑:大师作文网作业帮 分类:综合作业 时间:2024/11/11 16:02:47
*a 和 *a!='\0'有什么区别,
#include
main()
{
char s[10]="hello!";
inverp(s);
}
inverp(char *a)
{
if(!*a)
return 0;
inverp(a+1);
printf("%c",*a);
}
如果if条件句改为 *a!='\0' 就不对了,为什么.
这个程序 是怎么实现的
#include
main()
{
char s[10]="hello!";
inverp(s);
}
inverp(char *a)
{
if(!*a)
return 0;
inverp(a+1);
printf("%c",*a);
}
如果if条件句改为 *a!='\0' 就不对了,为什么.
这个程序 是怎么实现的
看其真值即可
*a 0 1
!*a 1 0
*a 0 1
*a!='\0' 0 1
------------------------------------
相反吧,所以你那样写不对,可以改为*a == '\0' 或直接写 *a == 0,但这样还是比不上!*a 来得清楚自然.这是递归程序,程序一直调用自身至遇到结束符0才停止,并反向打印字母.就像堆栈一样,先调用的最后才执行.
*a 0 1
!*a 1 0
*a 0 1
*a!='\0' 0 1
------------------------------------
相反吧,所以你那样写不对,可以改为*a == '\0' 或直接写 *a == 0,但这样还是比不上!*a 来得清楚自然.这是递归程序,程序一直调用自身至遇到结束符0才停止,并反向打印字母.就像堆栈一样,先调用的最后才执行.