函数指针数组


#include 

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结构。

你可能感兴趣的:(函数指针数组)