1. 程式人生 > >函式指標陣列用法

函式指標陣列用法

#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("請輸入2個數字:");
            scanf("%d%d",&i,&j);
        
            //通過函式指標陣列去呼叫對應的函式
            int result = fun_array[cmd-1](i,j); 

            printf("result:%d\n",result);
        }
    }
     
    return 0;
}

作用:可代替switch-case使用