C语言-函数的指针/函数指针/回调函数

网友投稿 794 2022-11-19

C语言-函数的指针/函数指针/回调函数

C语言-函数的指针/函数指针/回调函数

函数指针一般用来实现函数回调的场景

函数指针格式:​​返回值(*指针名称)(参数1,参数2,参数N)​​

例如下面我定义了一个叫pp的函数指针,该指针可以用来代表所有入参为2个int,返回值为int类型的函数

int main(){ int(*pp)(int,int);}

注意与int *pp (int,int);读法的区别,这个读法是pp方法返回int类型的指针

下面用指针pp来表示一个加法函数和一个减法函数

int aa(int a,int b) { return a + b;}int bb(int a,int b) { return a - b;}int main(){ int(*pp)(int, int); // 使用pp来表示aa,执行aa函数,打印出3 pp = aa;//aa前面加不加&都可以 int a=pp(1,2); std::cout << a << std::endl; // 使用pp来表示bb,执行bb函数,打印出-1 pp = bb;//bb前面加不加&都可以 int b = pp(1, 2); std::cout << b << std::endl;}

使用typdef,define,或者using的方式让代码更少

//#define NEWTYPE int(*pp)(int, int)//typedef int(*NEWTYPE)(int, int);using NEWTYPE = int(*)(int,int);int aa(int a,int b) { return a + b;}int bb(int a,int b) { return a - b;};int main(){ NEWTYPE pp= aa; int a=pp(1,2); std::cout << a << std::endl; pp = bb; int b = pp(1, 2); std::cout << b << std::endl;}

也可以让函数的参数是函数指针类型

using NEWTYPE = int(*)(int,int);int aa(int a,int b) { return a + b;}int cc(int a,int b,NEWTYPE c) { int d = a + b; int e = c(d, 1); return e;}int main(){ int mys = cc(1, 2, aa); // 打印出4 std::cout << mys << std::endl;}

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:005-WebBuilder使用结构元素进行网页布局
下一篇:redis分布式锁解决表单重复提交的问题
相关文章

 发表评论

暂时没有评论,来抢沙发吧~