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

假设我们有以下代码:

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

谁能解释为什么会这样?

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

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