洞察探索如何通过一套代码实现跨平台小程序开发与高效管理,助力企业数字化转型
794
2022-11-19
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小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~