首页 > 学院 > 开发设计 > 正文

C语言结构体定义函数指针的简单高效的使用例子

2019-11-08 18:35:27
字体:
来源:转载
供稿:网友

对于大型项目来说,struct的使用会使整个代码更加简约,阅读起来和写起来都更加简便,以后就要多尝试这种用法了。下面是一个简单例子,可以参考一下。

#include <stdio.h>#include <stdlib.h>int fun(int flag,int size);int add(int a,int b);int multi(int a, int b);int max(int a,int b);int min(int a, int b);//声明结构体struct function { int flag;//定义标志 int (*func)(int a, int b);//定义函数指针};//设置结构体buf对应flag值,函数struct function buf[] = { {0x80,add}, {0x81,multi}, {0x82,max}, {0x83,min}};int add(int a,int b){ return a+b;}int multi(int a, int b){ return a*b;}int max(int a,int b){ return a > b ? a : b;}int min(int a, int b){ return a < b ? a : b;}//函数,输入flag值,buf大小,由flag值获得对应函数进行计算int fun(int flag,int size){ int result; int i; for(i = 0 ; i < size ; i++) { if(flag == buf[i].flag) { result = buf[i].func(3,5); } } return result;}int main(){ int addnumber,mulnumber,maxnumber,minnumber; addnumber = fun(0x80,4); PRintf("addnumber = %d/n",addnumber);//8 mulnumber = fun(0x81,4); printf("mulnumber = %d/n",mulnumber);//15 maxnumber = fun(0x82,4); printf("maxnumber = %d/n",maxnumber);//5 minnumber = fun(0x83,4); printf("minnumber = %d/n",minnumber);//3 return 0;}
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表