代码参考来源: https://blog.csdn.net/sinat_38245860/article/details/80016530
其中使用的知识:typedef
1,除了常见的功能:用typedef为现有类型创建别名,定义易于记忆的类型名
2,typedef定义函数
A定义函数指针例如:
typedef void (*func)(void);
另外一个好处就是利用
typedef int (*func)(void);
可以减少函数指针定义的繁琐,如果没有加上面的定义的话,当你函数要定义的时候需要的就是
void (*fn)(void);
这样才是表示一个函数指针,而如果有了
typedef int (*func)(void);
则不用那么麻烦,直接就可以用
func fn;
就表示是函数指针.
*int (pf)(int,int)等价于fun_TEST pf
B定义普通函数:
typedef int F (void);//定义函数类型F
之后可以这样声明:
F f,g;
相当于声明
int f(void);
int g(void);
注意事项:
typedef int (*INT);
//其中int *p;等价于INT p;
链表节点
typedef struct NODE
{
int data;
struct NODE *next; //或则是Node*next(在GCC中也是可以编译的正常使用);
}Node,*LinkList;
*其中Node P完全等价与LinkList P;
测试程序
#include <stdio.h>
int add(int a,int b);
int sub(int a,int b);
typedef void(*fun_TEST)(int,int)
void functionchoose(int,int);
int main()
{
int a1=3,a2=4;
functionchoose(a1,a2,add);
functionchoose(a1,a2,sub);
return 0;
}
int add(int a, int b)
{
printf("add function \n");
return a+b;
}
int sub(int a, int b)
{
printf("sub function \n");
return a-b;
}
void functionchoose(int a,int b,int (*pf)(int,int))//或则void functionchoose(int a,int b,fun_TEST pf)
{
printf("the result is %d \n",(*pf)( a, b));
}
程序还未测试