【发布时间】:2021-07-01 04:21:19
【问题描述】:
这是我查找 n 数总和的代码,我已经通过尝试实现函数指针在迭代和递归方法中解决了它,但找不到错误是什么。
#include <stdio.h>
int num;
int input(int *a)
{
scanf("%d", a);
return 0;
}
int sumOfNNumber(int (*number)(int*))
{
number(&num);
if (num == 0) return 0;
else return num + sumOfNNumber(num - 1);
}
int main()
{
sum_it = 0;
int (*ptr)(int*) = &input;
int sum_rc = sumOfNNumber(ptr);
printf("%d\n", sum_rc);
return 0;
}
这是编译器显示的错误,我使用了在线gdb编译器。我也尝试了 VS Code,但错误仍然存在。
main.c: In function ‘sumOfNNumber’:
main.c:24:37: warning: passing argument 1 of ‘sumOfNNumber’ makes pointer from integer without a cast [-Wint-conversion]
else return num + sumOfNNumber(num - 1);
^~~
main.c:19:5: note: expected ‘int (*)(int *)’ but argument is of type ‘int’
int sumOfNNumber(int (*number)(int*))
^~~~~~~~~~~~
main.c: In function ‘main’:
main.c:29:5: error: ‘sum_it’ undeclared (first use in this function)
sum_it = 0;
^~~~~~
main.c:29:5: note: each undeclared identifier is reported only once for each function it appears in
main.c:34:25: error: ‘number’ undeclared (first use in this function)
for(int i = 0; i <= number; i++)
^~~~~~
我认为我在实现函数指针时犯了错误,但检查它并正确。 请通过指出错误的意思和是帮助我解决。 谢谢。
【问题讨论】:
-
阅读错误信息。例如,此错误消息“错误:'sum_it' undeclared (first use in this function)”有什么不清楚的地方?
-
对不起,函数指针和递归结合的错误。
标签: c recursion compiler-errors function-pointers function-definition