int ret(char *)
{
//nothing
}
int main(void)
{
printf("%d\n",ret("foo"));
}
Run Code Online (Sandbox Code Playgroud)
为什么函数ret返回一个垃圾值???
和
int my_strlen(char *s)
{
if(*s)
return 1 + my_strlen(s + 1); // or my_strlen(s+1) + 1;
}
Run Code Online (Sandbox Code Playgroud)
在上面的函数中,如果我没有错,my_strlen应该总是在条件失败时(即每当它到达'\ 0'时)返回垃圾值,因为没有其他情况或任何返回语句的错误情况.所以对于任何有效的字符串,它应该总是返回1 +垃圾值.但事实并非如此.它工作正常.它给出了任何字符串的确切长度.为什么它不像函数" ret "那样返回垃圾值呢??? 请清楚我的怀疑.任何帮助将不胜感激.感谢名单..