設計一個簡易計數器:
選擇1.加法(add),2.減法(sub),3.乘法(mul),4.除法(div)。
int(*p[5])(int x, int y) = { 0, add, sub, mul, div };//轉移表:轉換表就是一個函數指針數組,建立一個轉換表需要兩個步驟,首先,聲明并初始化一個函數指針數組,唯一需要留心之處就是確定這些函數的原型出現在這個數組的聲明之前;一看轉移這幾個字兒,就想到和狀态相關,我們在實際應用中使用if-else結構或者switch語句進行一些狀态的切換。
(p[input])(x, y)//實作 + - * /幾個符号。
利用轉移表,函數指針數組是進行不同運算的代碼簡化。
#define _CRT_SECURE_NO_WARNINGS 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;
}
int main()
{
int x, y;
int input = ;
int ret = ;
int(*p[])(int x, int y) = { , add, sub, mul, div };//轉移表
while (input)
{
printf("************************\n");
printf(" 1.add 2.sub \n");
printf(" 3.mul 4.div \n");
printf("************************\n");
printf("請選擇:");
scanf("%d", &input);
if ((input <= ) && (input >= ))
{
printf("請輸入操作數:");
scanf("%d %d", &x, &y);
ret = (*p[input])(x, y);
}
else
printf("輸入有誤\n");
printf("ret = %d\n", ret);
}
system("pause");
return ;
}
運作結果: