函数调用的返回值是什么,如果该函数没有真正提供函数调用

时间:2015-01-21 05:08:33

标签: c stackframe

假设我们有以下代码:

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。当我执行时,它会不时发生变化。

有人可以解释为什么会这样吗?

1 个答案:

答案 0 :(得分:5)

如果函数定义中没有出现return语句,则在执行被调用函数的最后一个语句后,控件会自动返回到调用函数。在这种情况下,被调用函数的返回值为undefined。如果不需要返回值,则声明该函数具有void返回类型;否则,默认的返回类型是int。

如上所述,它是未定义的,因此找回一些随机值作为返回的根本原因将是无用的。