首先回顾函数指针的声明方式:(以一个返回值为空的有一个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
本文介绍了函数指针的基础概念,包括其声明方式,并通过两个具体的代码示例展示了如何定义和使用返回值为函数指针的函数。同时,文章还对比了使用typedef简化函数指针声明的方法。
1370

被折叠的 条评论
为什么被折叠?



