[c]代码库
#include <stdio.h>
/*
p_fun_type 只是定义一个类型,就像typedef int* p_int中的p_int代表
一个整形的指针类型一样
*/
typedef int (*p_fun_type)(int);
int Fun(int n)
{
printf("the test number is %d n",n);
return n;
}
/* 函数指针做形参 */
int Fun_PP(int n,p_fun_type pf)
{
return n + pf(200);
}
/*
这个函数,函数名是PFun,行参为整形类型b,
返回值是int (*) (int)
*/
int (*PFun(int b))(int)
{
printf("===========================n");
return Fun;
}
/* 返回一个函数指针 */
int main ()
{
// 函数指针,P_fun可以指向任何返回值为void参数为int的函数
int (*P_fun)(int);
Fun(10);
/*
printf("----------fen ge xian 0000000000000 ---------n");
P_fun = &Fun;
(*P_fun)(20);
*/
/*
Fun的函数名与P_fun函数指针都是一样的,即都是函数指针。
Fun函数名是一个函数指针常量,而P_fun是一个函数数指针变量
*/
printf("----------fen ge xian 1111111111111 ---------n");
P_fun = Fun;
P_fun(20);
/*
printf("----------fen ge xian 22222222222222 ---------n");
p_fun_type fun_type;
fun_type = &Fun;
(*fun_type)(6333);
*/
printf("----------fen ge xian 33333333333333 ---------n");
p_fun_type fun_type;
fun_type = &Fun;
int sum = Fun_PP(300,fun_type);
printf("sum = %dn",sum);
printf("----------fen ge xian 44444444444444 ---------n");
p_fun_type fun_fromFun = PFun(100);
fun_fromFun(9999);
return 0;
}