typedef定义函数指针
来源:互联网 发布:erlang python 编辑:程序博客网 时间:2024/05/22 17:23
下面这篇博客讲解使用typedef定义函数指针,十分清晰。
http://blog.csdn.net/qll125596718/article/details/6891881
把上文中的例子记载下来,便于以后学习使用。
例子1.
- char (*pFun)(int);
- char glFun(int a){ return (char)a;}
- void main()
- {
- pFun = glFun;
- (*pFun)(96);
- }
例子2.
- typedef char (*PTRFUN)(int);
- PTRFUN pFun;
- char glFun(int a){ return;}
- void main()
- {
- pFun = glFun;
- (*pFun)(2);
- }
例子3.
- #include <stdio.h>
- #include <assert.h>
- typedef int (*FP_CALC)(int,int);//定义一个函数指针类型
- int add(int a, int b)
- {
- return a + b;
- }
- int sub(int a, int b)
- {
- return a - b;
- }
- int mul(int a, int b)
- {
- return a * b;
- }
- int div(int a, int b)
- {
- return b ? a/b : -1;
- }
- //定义一个函数,参数为op,返回一个指针,该指针类型为拥有两个int参数、
- //返回类型为int的函数指针。它的作用是根据操作符返回相应函数的地址
- FP_CALC calc_func(char op)
- {
- switch( op )
- {
- case '+':
- return add;
- case '-':
- return sub;
- case '*':
- return mul;
- case '/':
- return div;
- default:
- return NULL;
- }
- return NULL;
- }
- //s_calc_func为函数,它的参数是 op,
- //返回值为一个拥有两个int参数、返回类型为int的函数指针
- int (*s_calc_func(char op)) (int , int)
- {
- return calc_func(op);
- }
- //最终用户直接调用的函数,该函数接收两个int整数,
- //和一个算术运算符,返回两数的运算结果
- int calc(int a, int b, char op)
- {
- FP_CALC fp = calc_func(op);
- int (*s_fp)(int,int) = s_calc_func(op);//用于测试
- assert(fp == s_fp);// 可以断言这两个是相等的
- if(fp)
- return fp(a,b);
- else
- return -1;
- }
- void main()
- {
- int a = 100, b = 20;
- printf("calc(%d, %d, %c) = %d\n", a, b, '+', calc(a, b, '+'));
- printf("calc(%d, %d, %c) = %d\n", a, b, '-', calc(a, b, '-'));
- printf("calc(%d, %d, %c) = %d\n", a, b, '*', calc(a, b, '*'));
- printf("calc(%d, %d, %c) = %d\n", a, b, '/', calc(a, b, '/'));
- }
阅读全文
0 0
- typedef定义函数指针
- typedef 定义函数指针
- typedef定义函数指针
- typedef 定义函数指针
- typedef定义函数指针
- typedef 定义函数指针
- typedef 定义函数指针
- typedef 定义函数指针
- typedef定义函数指针
- typedef定义函数指针
- typedef 定义函数指针
- typedef 定义函数指针
- typedef定义函数指针
- typedef定义的函数指针
- 使用typedef定义函数指针
- 使用typedef定义函数指针
- 使用typedef定义函数指针
- 利用typedef定义函数指针
- Master的注册机制和状态管理详解
- Android图像处理_积木效果md
- web.xml中<security-constraint>和四种认证类型
- 链表的实现
- 设计模式学习:命令模式
- typedef定义函数指针
- 【数据结构】中缀表达式求值
- mysql 开启远程
- 同一个jsp页面实现增删改查,查询时遇到困难以及定时器遇到的情况
- 数据库(二)
- php各版本下载
- JAVA内存区域与内存溢出相关设置
- [Zeppelin]设置访问登录权限
- PyTorch学习系列(九)——参数_定义