首先来比较一下 函数指针 和 指针函数
函数指针 | 指针函数 |
定义:指向函数的指针变量 | 定义:返回值类型为指针的函数 |
作用:主要用作调用函数和做函数的参数 |
|
语法:数据类型(*指针变量名)(参数表) | 语法:数据类型 *函数名(参数表) |
int (*p)(int a, int b); //p是一个指向函数的指针变量,所指函数的返回类型为整型 | int *p(int a, int b); //p 是函数名,此函数的返回值类型为整型指针 |
由此看来,指针函数就是所谓的函数,只不过,其返回类型为指针类型。
那么我们着重来看一下函数指针,简单的列举一个例子:
int max(int a, int b)
{
return a > b ? a : b;
}
int min(int a, int b)
{
return a > b ? b : a;
}
int ave(int a, int b)
{
return (a + b) / 2;
}
int processer(int x, int y, int(*p)(int a, int b))
{
return p(x, y);
}
int _tmain(int argc, _TCHAR* argv[])
{
int a, b;
cin >> a >> b;
cout << "compare a with b, max = " << processer(a, b, max) << endl;
cout << "compare a with b, min = " << processer(a, b, min) << endl;
cout << "the average a and b is, average = " << processer(a, b, ave) << endl;
return 0;
}
在设计程序时,我们经常会碰到一下像 UI 中的button 在不同的弹出情况下,button 做出不同的点击响应信息,在这种情况下,我们可以通过函数指针传参,在各个响应类中实现对应类型的函数就可以。。。其他的使用方式,就活学活用,见招拆招吧!!!