1.使用函数指针数组来实现计算器

2.通过函数指针变量来调用对应的函数

#include <stdio.h>

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("请选择菜单:\n");
printf("1:加 2:减 3:乘 4:除 0:退出 \n");
}
/*定义函数指针数组变量
(int,int) 对应于函数指针数组 指向的函数列表
*/
int (*fun_array[4]) (int,int) = {add, sub, mul, div}; int main(){
int i,j;
int cmd;
while(1){
make_menu();
scanf("%d",&cmd);
if(cmd==0){
break;
}
if(cmd>=1&&cmd<=4){
printf("请输入2个数字:");
scanf("%d%d",&i,&j);
//通过函数指针数组去调用对应的函数
int result = fun_array[cmd-1](i,j); //等同于 int result = (*fun_array[cmd-1])(i,j);
//通过函数指针变量来调用对应的函数
//int (*p)(int,int) = fun_array[cmd-1];
//int result = p(i,j);
printf("result:%d\n",result);
}
} return 0;
}

  

C函数指针数组的定义和使用的更多相关文章

  1. C++基础——函数指针 函数指针数组

    ==================================声明================================== 本文版权归作者所有. 本文原创,转载必须在正文中显要地注明 ...

  2. typedef 函数指针 数组 std::function

    1.整型指针 typedef int* PINT;或typedef int *PINT; 2.结构体 typedef struct { double data;}DATA,  *PDATA;  //D ...

  3. C/C++ 一段代码区分数组指针|指针数组|函数指针|函数指针数组

    #include<stdio.h> #include<stdlib.h> #include<windows.h> /* 举列子说明什么是函数指针 */ //以一个加 ...

  4. C++ code:函数指针数组

    函数指针作为一种数据类型,当然可以作为数组的元素类型.例如,要实现用菜单来驱动函数调用的程序框架,则用函数指针数组来实现就比较容易维护. #include<iostream> using ...

  5. c语言.函数指针数组

    函数指针: 一个指向函数的指针.一般用函数名表示. 函数指针数组:元素为函数指针的数组.转移表.c语言中函数不可以定义为数组,只能通过定义函数指针来操作. #include<stdio.h> ...

  6. 转:函数指针数组的妙用(I)

    转自:http://blog.sina.com.cn/s/blog_4c78b35f010008hi.html 笔者在开发某软件过程中遇到这样一个问题,前级模块传给我二进制数据,输入参数为 char* ...

  7. C/C++用状态转移表联合函数指针数组实现状态机FSM

    状态机在project中使用很的频繁,有例如以下常见的三种实现方法: 1. switch-case 实现.适合简单的状态机. 2. 二维状态表state-event实现.逻辑清晰.可是矩阵通常比較稀疏 ...

  8. c语言的函数指针和函数指针数组的简单demo

    今天,简单记录一下,函数指针和函数指针数组的使用,废话不多说,直接贴上代码,里面有详细的注释,方便以后查阅. #include <cstdio> #include <Windows. ...

  9. C 函数指针 函数指针数组 转移表

    内容来自<c和指针>,整理后方便个人理解 高级声明 cdel程序可以方便的给出声明的释义 指向函数的指针 int ( *f ) ( int n_values, float amount ) ...

随机推荐

  1. TextField 、 FTE、 TLF 的使用情景和简单说明

    作者:tiangej 来源:CSDN 原文:https://blog.csdn.net/tiangej/article/details/16859239 版权声明:本文为博主原创文章,转载请附上博文链 ...

  2. Codechef TSUM2 Sum on Tree 点分治、李超线段树

    传送门 点分治模板题都不会迟早要完 发现这道题需要统计所有路径的信息,考虑点分治统计路径信息. 点分治之后,因为路径是有向的,所以对于每一条路径都有向上和向下的两种.那么如果一条向上的路径,点数为\( ...

  3. NetworkInterface网速监测

    private NetworkInterface[] nicArr; //网卡集合 private Timer timer; //计时器 public MainWindow() { Initializ ...

  4. Socket HttpListen

    HttpListener sSocket = new HttpListener(); sSocket.Prefixes.Add("http://127.0.0.1:8080/"); ...

  5. Mongodb 学习笔记(三) .net core SDK

    首先添加 Nuget包  MongoDB.Driver 创建一个Model. public class Student { public ObjectId _id { get; set; } publ ...

  6. 能够提高PHP的性能的一些注意事项

      1. 如果能将类的方法定义成static,就尽量定义成static,它的速度会提升将近4倍.(静态类调用属性和方法,只可以调用静态属性和方法.self::方法名().self::属性名.只有实例化 ...

  7. JS中的迭代器和生成器

    利用迭代器生成一个遍历方法: let arr1 = [1, 2, 3, 11, 22, 13, 24]; function forOf(arr, callback) { // 找到迭代器函数 let ...

  8. el-pagination分页优化

    表格分页优化: <template> <el-pagination small background @size-change="handleSizeChange" ...

  9. 【Python】单例模式

    单例 class MusicPlayer(object): instance = None def __new__(cls, *args, **kwargs): if cls.instance is ...

  10. SQL SERVER-记录对表操作的触发器

    CREATE TRIGGER [dbo].[KNMT_LOG] ON [dbo].[KNMT] FOR UPDATE, DELETE AS ) ) ) ) DECLARE @STATMT AS VAR ...