在C 编程语言中,我们可以有一个概念,称为指向函数的指针。在本教程中,我们将学习如何声明函数指针以及如何使用此指针调用函数。要理解这个概念,你应该具备函数和指针的基本知识。
如何声明函数指针?
function_return_type(*Pointer_name)(function argument list)
例如:
double (*p2f)(double, char)
这里double
是函数的返回类型,p2f
是函数指针的名称,(double, char)
是这个函数的参数列表。这意味着此函数的第一个参数是double
类型,第二个参数是char
类型。
让我们借助一个例子来理解这一点:这里我们有一个函数sum
,它计算两个数字的总和并返回总和。我们创建了一个指向此函数的指针f2p
,我们使用此函数指针f2p
调用该函数。
int sum (int num1, int num2)
{
return num1+num2;
}
int main()
{
/* The following two lines can also be written in a single
* statement like this: void (*fun_ptr)(int) = &fun;
*/
int (*f2p) (int, int);
f2p = sum;
//Calling function using function pointer
int op1 = f2p(10, 13);
//Calling function in normal way using function name
int op2 = sum(10, 13);
printf("Output1: Call using function pointer: %d",op1);
printf("\nOutput2: Call using function name: %d", op2);
return 0;
}
输出:
Output1: Call using function pointer: 23
Output2: Call using function name: 23
关于函数指针的一些要点:
- 如注释中所述,您可以在单个语句中声明一个函数指针并为其赋值函数,如下所示:
void (*fun_ptr)(int) = &fun;
- 您甚至可以从此语句中删除
&
符号,因为单独的函数名称表示函数地址。这意味着上面的语句也可以这样写:
void (*fun_ptr)(int) = fun;