函数指针和指针函数
先说指针函数,这个简单,就是一个函数的返回类型是个指针嘛,如 int* f(x,y);
指向函数代码首地址的指针变量称为函数指针。
bool LC (string &, string &); //声明一个普通函数
bool (*pf) (string &, string &); //声明一个函数指针
下面的代码是合法的:
bool b=LC(str1,str2); bool b=(*pf)(str1,str2);
typedef bool (*cmpFunc) (string &, string &); //定义一种类型的名称,这种类型就是函数指针
下面的代码是合法的:
1 cmpFunc pf1=0; 2 cmpFunc pf2=&LC; 3 bool b=(*pf2)(str1,str2); 4 cmpFunc pf3=LC; 5 bool b=pf3(str1,str2);
第2行与第3行容易理解,而第4行与第5行也中合法的,此时可以把cmpFunc理解一种函数类型。
在使用回调函数时经常需要把一个函数作为参数传递给另外一个函数。可以有下面两种形式:
void useBigger(string &,string &,bool(string&,string&)); void useBigger(string &,string &,bool (*) (string&,string&));
所以下面的代码是合法的:
useBigger(str1,str2,pf2);
useBigger(str1,str2,pf3);
本文来自博客园,作者:高性能golang,转载请注明原文链接:https://www.cnblogs.com/zhangchaoyang/articles/1981550.html