int ret(char *)
{
//nothing
}
int main(void)
{
printf("%d\n",ret("foo"));
}
为什么函数 ret 返回一个垃圾值???
和
int my_strlen(char *s)
{
if(*s)
return 1 + my_strlen(s + 1); // or my_strlen(s+1) + 1;
}
在上面的函数中,如果我没记错的话,my_strlen 应该总是在条件失败时返回 Junk 值(即,只要它达到 '\0'),因为没有 else case 或任何 false case 的返回语句。所以对于任何有效的字符串,它应该总是返回 1 + 垃圾值。但事实并非如此。它工作正常。它给出了任何字符串的确切长度。为什么它不像函数“ ret ”那样返回垃圾值???请消除我的疑虑。任何帮助将不胜感激。谢谢..