用函数指针实现计算器的加减乘除


函数指针:本质上是一个指针,只不过指向函数而已
        编译器在编译期间对函数开辟了一块空间,而这快空间的开始地址,就是它的函数指针

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);

你可能感兴趣的:(笔记,c语言,开发语言,数据结构)