如要声明指向函数的指针,请考虑以下代码:
int (*pfunction) (int);
它声明了一个变量,是一个指向函数的指针。指针的名称是pfunction
,它只能指向具有int
类型的一个参数并返回int
类型的值的函数。
考虑以下函数:
int sum(int a, int b); // 计算 a+b 的结果
可以将其地址存储在声明的函数指针中:
int (*pfun)(int, int) = sum;
现在可以通过函数指针调用sum()
,如下所示:
int (*pfun)(int, int) = sum;
int result = pfun(45, 55);
下面的代码定义了三个具有相同参数和返回类型的函数,并使用指向函数的指针依次调用它们中的每一个。
示例代码
#include <stdio.h>
// 声明函数
int sum(int, int);
int product(int, int);
int difference(int, int);
int main(void)
{
int a = 10; // 初始化 a 的值
int b = 5; // 初始化 b 的值
int result = 0; // 存储结果
int(*pfun)(int, int); // 函数指针声明
pfun = sum; // 指向 sum() 函数
result = pfun(a, b); // 通过指针调用 sum() 函数
printf("pfun = sum, result = %2d\n", result);
pfun = product; // 指向 product() 函数
result = pfun(a, b); // 通过指针调用 product() 函数
printf("pfun = product result = %2d\n", result);
pfun = difference; // 指向 difference() 函数
result = pfun(a, b); // 通过指针调用 difference() 函数
printf("pfun = difference result = %2d\n", result);
system("pause");
return 0;
}
// 函数实现
int sum(int x, int y)
{
return x + y;
}
// 函数实现
int product(int x, int y)
{
return x * y;
}
// 函数实现
int difference(int x, int y)
{
return x - y;
}
执行上面示例代码,得到以下结果:
pfun = sum, result = 15
pfun = product result = 50
pfun = difference result = 5