實現一個簡單的計算器,使用到函數指針和回調函數。
源代碼:
#include <stdio.h>
float add (float a,float b)
{
return a + b;
}
float sub (float a,float b)
{
return a - b;
}
float mul (float a,float b)
{
return a * b;
}
float div (float a,float b)
{
return a / b;
}
//回調函數
float func (float (*p)(float a,float b),float a,float b)//函數指針作爲函數參數
{
return p(a,b);
}
float main()
{
float a;
float b;
float res;
char ch;
printf ("input num1:");
scanf ("%f",&a);
printf ("input num2:");
scanf ("%f",&b);
printf ("input op:");
scanf ("%c",&ch);
switch (ch)
{
case '+':
res = func (add,a,b);//函數名是地址,代表函數空間的入口地址,可以用指針接收
break;
case '-':
res = func (sub,a,b);
break;
case '*':
res = func (mul,a,b);
break;
case '/':
res = func (div,a,b);
break;
}
printf ("res = %g\n",res);
return 0;
}
函數指針可以和函數名一樣使用,函數指針用在多人合作開發時,可以把自己寫的函數的地址給別人,讓其他人可以使用這個函數。