C语言_函数指针实例
自定义函数指针来实现C++面向对象的多态特性。
这里遇到一个问题:printf行缓冲区的问题,Linux不会一个字一个字的输出,而是等待缓冲区满了,一下输出,或者遇到换行符也会将整行输出。
#include <stdio.h>
typedef int(*pFunc)(int ,int ); // 函数指针
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 a=0,b=0;
char c=0;
pFunc p1 = NULL;
int result = 0;
printf("请输入两个数\n");
scanf("%d,%d",&a,&b);
printf("请选择+ - * / \n");
// 这个do while 加上可去掉
do
{
scanf("%c",&c);
}while('\n' == c);
// scanf("%c",&c);
switch(c)
{
case '+':
p1 = add;
break;
case '-':
p1 = sub;
break;
case '*':
p1 = mul;
break;
case '/':
p1 = div;
break;
default:
p1 = NULL;
break;
}
result = p1(a,b);
printf("%d %c %d = %d.\n",a,c,b,result);
return 1;
}
还没有评论,来说两句吧...