0

假设我们有以下代码:

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

谁能解释为什么会这样?

4

1 回答 1

5

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

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

于 2015-01-21T05:13:38.203 回答