函数指针数组


#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)对应于函数指针数组指向的函数列表

//方式1

//int (*fun_array[4])(int, int) = {add, sub, mul,div};


//方式2
/************/
typedef int (*func) (int, int);
func fun_array[4] = {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("请输入两个数字:");
            scanf("%d%d",&i,&j);

            printf("result=%d\n",fun_array[cmd-1](i,j));

        }
    }

    return 0;
}

程序运行结果如下。通过函数指针数组可以代替switch-case结构。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 原文地址: 浅谈 数组指针 指针数组 函数指针 函数指针数组... 以及它们之间区别。 首先,先说明一个关系:数组...
    Caiaolun阅读 8,426评论 0 6
  • 在C语言中,五种基本数据类型存储空间长度的排列顺序是: A)char B)char=int<=float C)ch...
    夏天再来阅读 8,722评论 0 2
  • 指针是C语言中广泛使用的一种数据类型。 运用指针编程是C语言最主要的风格之一。利用指针变量可以表示各种数据结构; ...
    朱森阅读 8,803评论 3 44
  • 文/希邪 很久没有那种感觉,被岁月凌乱了思绪之后,牵着回忆浴火重生。 生命这条蜿蜒流逝的河...
    希远阅读 3,328评论 0 0
  • 作者 / 我走路带风 最近重温了一部电影,叫做《他其实没那么喜欢你》,看完以后真的想拍桌子大叫:操!说得太他妈到我...
    我走路带风carina阅读 14,187评论 74 473