C語言結構體定義函式指標的簡單高效的使用例子
阿新 • • 發佈:2019-01-09
對於大型專案來說,struct的使用會使整個程式碼更加簡約,閱讀起來和寫起來都更加簡便,以後就要多嘗試這種用法了。下面是一個簡單例子,可以參考一下。
#include <stdio.h>
#include <stdlib.h>
int fun(int flag,int size);
int add(int a,int b);
int multi(int a, int b);
int max(int a,int b);
int min(int a, int b);
//宣告結構體
struct function {
int flag;//定義標誌
int (*func)(int a, int b);//定義函式指標
};
//設定結構體buf對應flag值,函式
struct function buf[] = {
{0x80,add},
{0x81,multi},
{0x82,max},
{0x83,min}
};
int add(int a,int b)
{
return a+b;
}
int multi(int a, int b)
{
return a*b;
}
int max(int a,int b)
{
return a > b ? a : b;
}
int min(int a, int b)
{
return a < b ? a : b;
}
//函式,輸入flag值,buf大小,由flag值獲得對應函式進行計算
int fun(int flag,int size)
{
int result;
int i;
for(i = 0 ; i < size ; i++)
{
if(flag == buf[i].flag)
{
result = buf[i].func(3 ,5);
}
}
return result;
}
int main()
{
int addnumber,mulnumber,maxnumber,minnumber;
addnumber = fun(0x80,4);
printf("addnumber = %d\n",addnumber);//8
mulnumber = fun(0x81,4);
printf("mulnumber = %d\n",mulnumber);//15
maxnumber = fun(0x82,4);
printf("maxnumber = %d\n",maxnumber);//5
minnumber = fun(0x83,4);
printf("minnumber = %d\n",minnumber);//3
return 0;
}