#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; |
} |