C语言的函数指针数组
来源:互联网 发布:java项目代码实例 编辑:程序博客网 时间:2024/05/02 00:22
函数指针数组
概念:
数组元素是指针函数的数组叫做指针函数数组,通常我们也叫做转移表
定义个初始化:
返回类型说明符 (*函数指针数组名[])(参数列表) = {函数指针/函数名,…};
如下: int (*fun_array[])(int,int) = {add,del,mul,div};
函数指针数组的使用如下:
函数指针数组名下标或者(*函数指针数组名)下标;
下面是给出的示例代码:
#include<stdio.h>int add(int a,int b); int sub(int a,int b); int mul(int a,int b); int div(int a,int b); void make_menu();int main(int argc,char* argv[]){ int (*fun_array [])(int,int) = {add,sub,mul,div}; int cmd = 0; int result = 0; int num1,num2; while(1){ make_menu(); printf("please select a num what you want :"); scanf("%d",&cmd); if(cmd == 0){ break; }else{ printf("please input two num you want!\n"); scanf("%d %d",&num1,&num2); result = fun_array[cmd-1](num1,num2); printf("the form_1_result you want to calculate is:%d\n",result); int (*fun_pointer)(int,int) = fun_array[cmd-1]; result = fun_pointer(num1,num2); printf("the form_2_result you want to calculate is:%d\n",result); result = (*fun_array[cmd-1])(num1,num2); printf("the form_3_result you want to calculate is:%d\n",result); } } return 0;}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 a/b;}void make_menu(){ printf("=====================\n"); printf("1:add\n"); printf("2:sub\n"); printf("3:mul\n"); printf("4:div\n"); printf("0:quit\n"); printf("=====================\n");}
由上面我们可以看出来函数指针数组的三种调用方式:
int (*pointer)(int ,int ) = fun_array[i];
int result = pointer(num1,num2);
或者:
int result = fun_arrayi;
或者:
int result =*(fun_array[i])(num1,num2);
第三种形式我们是不经常会用到的,
结果:
1:add
2:sub
3:mul
4:div
0:quit
please select a num what you want :1
please input two num you want!
10 11
the form_1_result you want to calculate is:21
the form_2_result you want to calculate is:21
the form_3_result you want to calculate is:21
函数指针数组的运用的注意点:
- 函数的返回类型一样,并且函数的形参也是要一样
- 通常是在swith函数中去做这样的函数指针数组,便于简化代码
0 0
- C语言中的指针(指针数组 数组指针 函数指针 函数指针数组 指向函数指针数组的指针)
- C语言的函数指针数组
- c语言:数组指针,指针数组,函数指针,函数指针数组,指向函数指针数组的指针
- C语言:浅析指针数组、数组指针、函数指针、函数指针数组、指向函数指针数组的指针
- C语言 复杂指针的申明问题 数组指针 指针数组 函数指针 指针函数
- c语言学习,指针函数、函数指针、指针的指针、指向指针数组的指针
- c语言学习,指针函数、函数指针、指针的指针、指向指针数组的指针
- C语言:数组指针、指针数组、指针的指针、函数指针
- C语言:数组 指针 函数
- C语言函数指针数组
- 【C语言】函数,函数指针;指针数组,数组指针。
- C语言_函数指针数组指针
- 【C语言】理解指针数组 数组指针 函数指针
- C语言的指针、数组和函数的联系
- c语言的数组、指针、函数传递释义
- c语言函数指针数组的简单实例
- C语言指针的函数运用和数组
- C语言的指针函数和数组0809
- android 自定义字体样式
- react Native push传值 第二个页面接收不到数据
- 存储与触发
- 怎样花两年时间去面试一个人
- 框架 day80 涛涛商城项目-redis安装单机版solr,搭建搜索服务层,solrJ使用
- C语言的函数指针数组
- spark+kudu 例子
- Android Studio查看jks秘钥
- Scala语法学习
- Debian下安装git出现unpack failed: unpack-objects abnormal exit错误解决方案
- genymotion 安卓模拟器中 没有声音,能整出来声音不,大神求救?
- Windows10 IIS配置PHP运行环境
- 入侵检测数据集随想
- 给一个设备发push,却收到相同的2条,有谁遇到过这个问题吗?