指针函数
指针函数有些像C#
中的委托delegate
(不知道理解的对不对)。
定义函数指针
int *compare(int, int );
一般简写为
typedef int (*compare)(int,int);
这样就定义了一个名为compare
的函数指针。compare
指针类型为:指向返回int
类型并带有两个int
参数的函数的指针。
函数指针只能通过同类型函数、函数指针 、常量0初始化。函数指针初始化为0,和指针初始化为0是一样的 ,都表示不指向任何对象。
int intCompare(int x,int y){
if (x == y)
return 0;
else if (x > y)
return 1;
else
return -1;
}
int main(int argc, char const *argv[])
{
typedef int (*compare)(int x, int y);
compare com = intCompare;
int reslut1 = (*com)(1, 2); // 显示调用
std::cout<< reslut1<<endl;
//console : -1
int reslut2 = com(2, 2); // 隐式调用
std::cout << reslut2 << endl;
// console : 0
int reslut3 =intCompare(2,1); //直接调用函数
// console : 1
}
函数指针做形参
以函数指针做形参的函数的定义有两种
void defPointFun(int fun(int ,int ))
{
//todo somethings
}
另一种
void defPointFun(int (*fun)(int ,int ))
{
//todo somethings
}
还没有想到适用的场景,可能随着学习的深入和遇到的业务场景的增加,会有实际使用的场景
函数返回函数指针
函数指针也可以做函数的返回值。《C++ Primer》 中讲“正确写出这种返回类型相当不容易”。故此,暂时先不去研究它了。
标签:compare,return,函数,int,C++,函数指针,指针
From: https://www.cnblogs.com/pangzishuoma/p/17507355.html