首先回顾函数指针的声明方式:(以一个返回值为空的有一个int类型参数的函数指针为例)
void func(int); //函数
void (*func)(int) //函数指针
void (*func[5])(int) //函数指针的数组
下面两份代码给出一个返回值为函数指针的函数的例子,演示声明该类函数的两种不同方式,以及函数指针的使用。
#include <stdio.h>
void (*func1(int n, void (*func)(int))) (int)
{
int m = n * 10;
//printf("m = %d\n", m);
void (*f)(int) = func;
func(m);
return f;
}
void func2(int n)
{
printf("m = %d\n", n);
}
int main()
{
int n;
n = 9;
printf("n = %d\n", n);
void (*f)(int) = func1(n, func2);
f(1);
return 0;
}
#include <stdio.h>
typedef void (*Func) (int);
Func func1(int n, Func func)
{
int m = n * 10;
Func f= func;
func(m);
f(m);
return f;
}
void func2(int n)
{
printf("m = %d\n", n);
}
int main()
{
int n;
n = 9;
printf("n = %d\n", n);
Func f = func1(n, func2);
f(1);
return 0;
}
测试结果
n = 9
m = 90
m = 90
m = 1