C语言函数指针作参数,不加*号也行?
下面的程序运行通过了:
#include<stdio.h>
int f(int x)
{
return x+100;
}
void g(int p(int))
{
printf("%d",p(1));
}
void main()
{
g(f);
}
和这种写法一样的结果:
void g(int (*p)(int))
{
printf("%d",p(1));
}
-----------------------------------
这两种写法是等价的吗?
[解决办法]
void g(int (*p)(int))//p是一个函数指针,p的值是函数的地址,p(1),调用函数
{
printf("%d",p(1));
}
void g(int p(int))//p是一个指向函数的变量,相当于typedef int p(int)
{
printf("%d",p(1));
}
int f(void);
/* ... */
g(f);
Then the definition of g might read
void g(int (*funcp)(void))
{
/* ... */
(*funcp)(); /* or funcp(); ... */
}
or, equivalently,
void g(int func(void))
{
/* ... */
func(); /* or (*func)(); ... */
}