【发布时间】:2013-09-16 02:39:45
【问题描述】:
在下面的程序中,函数指针被定义为指向一个不接受参数并返回 int 的函数,但函数指针在这里工作。为什么?
#include<stdio.h>
int mul(int*,int*);
int main()
{ int a=10,b=20;
int(*p)();
p=&mul;
printf("%d ", (*p)(&a,&b));
return 0;
}
int mul(int*a,int*b)
{
return (*a * *b);
}
【问题讨论】:
-
函数
ret_type name()对参数数量没有任何限制。ret_type name(void)是声明不带任何参数的函数的正确方法。 -
"int(*p)()" 不是指向返回 void 的函数的指针。 "void(*p)()" 是。
-
哦,我更正了这个问题。实际上返回类型是int。只需解释为什么函数指针在这里起作用。
-
void main()是错误的。int main(void)是正确的。 (这不是完全 100% 正确;void main()对于某些嵌入式系统可能是正确的,但 99% 肯定这不适用于您。)我很想知道您在哪里知道void main()是有效的。您可能正在使用一本不太懂 C 的人写的书,我希望能够警告人们远离它。 -
@KeithThompson,多余的 cmets 没有帮助。