假设我们有以下代码:
int func(char str[], int len) {
// Don't return anything here.
}
int main() {
char str[] = "Hello";
int result = func(str, strlen(str));
printf("%d\n", result);
}
它会在我的电脑上打印一些字符串值-1679929632。当我执行时,它会不时发生变化。
有人可以解释为什么会这样吗?
答案 0 :(得分:5)
如果函数定义中没有出现return语句,则在执行被调用函数的最后一个语句后,控件会自动返回到调用函数。在这种情况下,被调用函数的返回值为undefined。如果不需要返回值,则声明该函数具有void返回类型;否则,默认的返回类型是int。
如上所述,它是未定义的,因此找回一些随机值作为返回的根本原因将是无用的。