我有这个C代码,我确信它不会工作,但它确实。这个C int函数如何在没有返回语句的情况下工作?
#include <stdio.h>
int* find (int* a, int val) {
if (*a == val)
return a;
else
find(a+1, val);
}
int main() {
int a[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
int *b;
b = find(a, 7);
printf("%d\n", *b);
return 0;
}
当然,我从海湾合作委员会的警告,因为它缺乏find
功能的else分支内return语句。但是,它完美地工作。
为什么会发生这种情况?它如何知道通过递归函数返回一个int?当然,最后一次调用返回一个int,但我在无效的环境中调用它。
什么是'trova'? – asm
只要你拒绝告诉我们'trova'是什么,你如何期待一个有意义的答案?就我们所知,它立即调用'exit(0);'。 –
它不编译,程序中没有'trova'函数定义。粘贴可编译的测试代码。 – ouah