【发布时间】:2019-02-26 00:49:39
【问题描述】:
any_function 声明中的函数指针如何接收任何值?在主函数中,any_function 永远不会被赋予任何函数指针,只有函数本身。这是否意味着函数指针any_function正在递归调用自身?
#include <stdio.h>
int sum(int, int);
int product(int, int);
int difference(int, int);
int any_function(int(*pfun)(int, int), int x, int y);
int main(void)
{
int a = 10; /* Initial value for a */
int b = 5; /* Initial value for b */
int result = 0; /* Storage for results */
int (*pf)(int, int) = sum; /* Pointer to function */
/* Passing a pointer to a function */
result = any_function(pf, a, b);
printf("\nresult = %d", result );
/* Passing the address of a function */
result = any_function(product,a, b);
printf("\nresult = %d", result );
printf("\nresult = %d\n", any_function(difference, a, b));
return 0;
}
/* Definition of a function to call a function */
int any_function(int(*pfun)(int, int), int x, int y)
{
return pfun(x, y);
}
/* Definition of the function sum */
int sum(int x, int y)
{
return x + y;
}
/* Definition of the function product */
int product(int x, int y)
{
return x * y;
}
/*Defintion of the function product*/
int difference(int x, int y)
{
return x - y;
}
【问题讨论】:
-
它被赋予
pf,它被设置为sum。 -
“在主函数中,
any_function从来没有被赋予任何函数指针,只有函数本身。” False,对any_function的第一次调用显式传递了一个函数指针.其他两个调用隐式传递函数指针。 “这是否意味着函数指针any_function正在递归调用自身?” 不,绝对不是。 -
如果您删除两个对
any_function的调用,问题可能会更清楚。见minimal reproducible example。 -
@AnttiHaapala:哇,是的,这实际上是我一直忘记的同一个问题。好的,我现在明白了。
标签: c function-pointers