函数指针和指针函数

先说指针函数,这个简单,就是一个函数的返回类型是个指针嘛,如  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);
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值