【发布时间】:2015-08-25 07:53:44
【问题描述】:
这是我的代码:
#include <stdlib.h>
#include <stdio.h>
int sum(int,int);
int sum(int x, int size) {
int sum = 0;
printf("%p\n", &x);
printf("%p\n", &size);
printf("%p\n", &sum);
sum(x,size);
return 0;
}
int main() {
sum(2,4);
return 0;
}
我得到的错误是:
hello.c:11:5: error: called object type 'int' is not a function or function pointer
sum(x,size);
~~~^
【问题讨论】:
-
你真的想要一个变量和一个函数同名吗?
-
@SouravGhosh 为什么这是个问题?
-
不管怎样,打电话给
sum(x, size);时你觉得你在做什么?没有什么可以停止递归,所以你的程序会整天循环(至少直到它达到最大堆栈) -
@Eregrith 我只是在玩堆栈帧并尝试学习。
-
@KorayTugay 因为正如编译器告诉你的那样,你的变量
sum不是函数指针,所以你不能做sum(x, size):。但是,它可能是一个函数指针,指向另一个函数,因此调用sum(x, size);会调用那个函数而不是你的sum()函数。