函数指针:本质上是一个指针,只不过指向函数而已
编译器在编译期间对函数开辟了一块空间,而这快空间的开始地址,就是它的函数指针
int Max(int a, int b)
{
return a>b?a:b;
}
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)
{
if(b == 0)
{
return -1;
}
return a/b;
}
int Computer(int a, int b, int(*p)(int,int))
{
return p(a,b);
}
int main()
{
printf("a+b=%d\n",Computer(10,20,Add));
printf("a-b=%d\n",Computer(10,20,Sub));
printf("a*b=%d\n",Computer(10,20,Mul));
printf("a/b=%d\n",Computer(10,20,Div));
return 0;
}
C标准规定:函数名,可以认为是其开始地址
所以函数指针p获取函数地址: p = &Max; == p = Max;
函数指针p怎么调用: (*p)(10,20); == p(10,20);