1.定义一个无参数无返回值的函数指针
/*
这是一个函数指针
能够指向一个返回值类型为void无形数的函数
*/
{
void (*p)(void);
}
(*p):是固定写法,代表指针变量将来肯定指向函数的
左边void:指针变量p指向没有返回值的函数
右边void:指针变量指向没有形参的函数
其他类型的指针函数
1. int (*p)(void); // 无形参有返回值的
2. void (*p)(int a);// 有形参无返回值的
3. int (*p)(int a);// 有形参无返回值的
事例一:
#include <stdio.h>
int sum(int a, int b)
{
return (a + b);
}
int main(void)
{
// 定义一个函数指针,返回类型int,两整型形参
int (*p)(int x, int y);
// 使用函数指针变量指向函数
p = sum;
// 进行调用函数
int temp = p(2, 3);
// 输出结果
printf("temp = %d", temp);
// 控制台打印信息
// temp = 5
return 0;
}
事例二:
#include <stdio.h>
// 此函数第一个参数是函数指针
int function( int(*p)(int x, int y), int a, int b)
{
return p(a, b);
}
// 此函数是一般的函数,功能求和
int sum(int a, int b)
{
return (a + b);
}
// 此函数是一般的函数,功能求差
int differ(int a, int b)
{
return (a - b);
}
int main(void)
{
// 1. 将求和函数作为实参代入函数function中
int tempSum = function(sum, 2, 3);
printf("tempSum = %d\n", tempSum);
// 控制台打印结果:
// tempSum = 5
// 2. 将求差函数作为形参代入函数function中
int tempDiffer = function(differ, 2, 3);
printf("tempDiffer = %d\n", tempDiffer);
// 控制台打印结果
// tempDiffer = -1
return 0;
}