C语言中'0'和'\0'的区分,还有顺便帮忙解释相关一个程序。

bool is_number(char *str)
{
char *p = str;
if(*p == '0' && *(p+1) != '\0')//指针P的内容是’0‘且指针P的地址+1的地址的内容不等于’\0'。。不太懂。
return false;
while(*p != '\0')//这里也不太懂。。
{ if(*p <= '0' || *p >= '9')
return false;
p++;
}
return true;
}
对了这是一个解决判断用户输入的数值雯数字的程序。

'\0'的类型是char型字符,而‘0’是int类型数值,'\0'还表示遍历所有,已经结束。(*p == '0' && *(p+1) != '\0')表示*p字符串中第p个字符是0而第p+1个字符不是0即字符串没有结束(可能用户输入错误或字符为空);(*p != '\0')表示字符串不为空,则向下计算。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-08-26
0是字符0,\0是字符串结尾标识符,第一个if意思是p指向的地址为0而且p后面没有字符了;就return false;while中判断条件是p是否为结束字符串,if判断p所指向的内容是否在1到8之间,如果再的话,p指针往后移动,再重新判断,直到if条件满足(即p所指向的内容<=0或者>=9)返回false本回答被提问者采纳
第2个回答  2013-08-26
‘0’是字符0,ascii码是48,‘\0’是NUL符号,ascii码是0,即他们写法很相似,但在计算机里是不同的符号。
\0用来标记字符串结束,判断是否等于\0即判断字符串是不是结束了追问

能不能解释下程序啊。。 就是那个P+1的那个不太懂。。还有后面那个P++能不能解释下。

第3个回答  2013-08-26
这个问题搞清楚字符数组的组成就很简单了,一个字符串在末尾必须有一个‘\0’标识字符串结束,否则就是不合法,首先函数参数*str是字符串的首地址,第一个if语句是判断字符串是不是“0”,字符串“0”的最根本组成是“0 \0”,所以要同时判断*p和*(p+1);而while结束条件中也是这个道理,只要*p='\0',就表明当前指针已经指向了字符串结尾,就可以结束循环了
第4个回答  2013-08-26
第一个是判断输入的是否为0,如果是0,要检测0后面是否是字符串结束符'\0',假如不是说明还有别的字符,
返还失败。
while是判断字符串是否含有非数字输入的。
进行到最后就正确了,返还true。
也许是判断8进制的。
相似回答