深入理解指针(7)--计算机模拟实现
1 .计算机的简易实现
想要实现计算机的简易实现,这里讲两种方法,第一种是不用指针知识,第二种为用指针知识
1.不用指针的计算机实现
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
void menu() {printf("********************\n");printf("***1.add 2.sub***\n");printf("***3.mul 4.div***\n");printf("***0.exit ***\n");printf("********************\n");
}
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 input = 0;int a = 0, b = 0;int ret = 0;//这里可以存放多个函数地址do {menu();scanf("%d", &input);switch (input) {case 1:printf("请输入两个数\n");scanf("%d %d", &a, &b);ret = add(a, b);printf("结果是%d\n", ret);break;case 2:printf("请输入两个数\n");scanf("%d %d", &a, &b);ret = sub(a, b);printf("结果是%d\n", ret);break;case 3:printf("请输入两个数\n");scanf("%d %d", &a, &b);ret = mul(a, b);printf("结果是%d\n", ret);break;case 4:printf("请输入两个数\n");scanf("%d %d", &a, &b);ret = div(a, b);printf("结果是%d\n", ret);break;}} while (input);if (input == 0) {printf("您已退出");}
}
注意事项:避免变量多次重复定义
2.用指针的计算机实现
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
void menu() {printf("********************\n");printf("***1.add 2.sub***\n");printf("***3.mul 4.div***\n");printf("***0.exit ***\n");printf("********************\n");
}
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 input = 0;//这里可以存放多个函数地址int (*p[5])(int a, int b) = { 0,add,sub,mul,div };do {menu();scanf("%d", &input);if (input<=4&&input>=1) {printf("请输入两个数\n");int a = 0, b = 0;scanf("%d %d", &a, &b);printf("得到的结果是%d\n", p[input](a, b));}} while (input);if (input == 0) {printf("您已退出");}
}
注意函数指针的使用:int (*p[5]) (int a,int b),可以实现存放多个函数指针