程序如下:
#include <stdio.h>
int add_fun(int a, int b)
{
return a + b;
}
int add(int a, int b, int (*add_ret)(int a, int b))
{
printf("add_ret = %p\n", add_ret);
printf("*add_ret = %p\n", *add_ret);
printf("add_ret(a,b) = %d\n", add_ret(a,b));
printf("(*add_ret)(a,b) = %d\n", (*add_ret)(a,b));
return add_ret(a,b);
}
int main()
{
printf("add(3,5) = %d\n", add(3,5,add_fun));
getchar();
}
结果如下:
add_ret = 00C71163
*add_ret = 00C71163
add_ret(a,b) = 8
(*add_ret)(a,b) = 8
add(3,5) = 8
可以看到使用函数名本身还是解引用之后,地址都是一样的,使用也是一样的效果。