函数指针:
函数名代表函数的入口地址;
函数指针:本质是一个指针,指针指向的是函数的入口地址。
int(*p)(int,int) = NULL; //函数指针p只能保存有两个int形参以及int返回值的函数
【例】
int MyAdd(int x, int y)
{
return x + y;
}
void test()
{
int(*p)(int x, int y) = NULL;
p = MyAdd;
//通过指针变量p调用MyAdd函数
cout << p(10, 20) << endl;
}
注意:
不要对函数指针变量取*无意义;
函数指针变量判断大小无意义;
函数指针变量可以赋值 p2=p1;
函数指针变量可以判断相等p2==p1;
利用typedef给变量类型起别名
int MyAdd(int x, int y)
{
return x + y;
}
void test()
{
typedef int(*FUN_TYPE)(int x, int y);
FUN_TYPE p = NULL;
p = MyAdd;
//通过指针变量p调用MyAdd函数
cout << p(10, 20) << endl;
}
函数指针作为函数的参数
int myAdd(int x,int y)
{
return x + y;
}
int mySub(int x, int y)
{
return x - y;
}
int myMul(int x, int y)
{
return x * y;
}
int myDiv(int x, int y)
{
return x / y;
}
//设计一个算法,操作上面的函数
int myCalc(int x, int y,int(*func)(int,int) )
{
return func(x, y);
}
void test()
{
cout<< myCalc(10, 20, myAdd);
cout<< myCalc(10, 20, mySub);
cout<< myCalc(10, 20, myMul);
cout<< myCalc(10, 20, myDiv);
}
回调函数:
定义:如果一个函数的名字被当作参数使用,那么这个函数就是回调函数!
以下例子为两层回调函数: