1、函数指针
定义“函数地址”:
如果在程序中定义了一个函数,在编译时,编译系统为函数代码分配一段存储空间,这段存储空间的起始地址(又称入口地址)称为这个函数的指针。
函数名就是地址,跟以前说的数组名代表地址一样。
( int (*p)[4] 这是一个数组指针,原因是中括号的优先级 高于*的)
之前我们都这样写
可以改动一下
函数指针也讲究类型
下面就是把函数原型copy 过来 ,把函数名字改成p2,其他东西保留,这样才能让p2 指向这个函数
函数指针的好用之处
2、使用函数指针实现 练习题
第21行调用哪个函数,是根据用户输入的cmd值
*pfunc 就是在调函数啦
上面函数的第18 行可以配合着线程理解
int getMax(int data1,int data2)
int getMin(int data1,int data2)
int getSum(int data1,int data2)
他们的函数原型长得一样 ,所以可以共用一个指针
根据用户的输入确定pfunc 是什么值
再调用dataHandler 把两个操作数以及操作的算法传过来
cmd 是操作指令,用户输入完操作指令。输入完操作指令以后,去调用dataHandler,dataHandler之前,我们根据用户的输入指令,已经指定了这个函数指针到底是要执行什么样的运算法则,当dataHandler调用的时候运算法则有了 ,操作数也有了。
结果如下
(补充)
![](https://img-blog.csdnimg.cn/20210910151703851.jpg?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5Yaw57OW5p2O5a2QMTIz,size_20,color_FFFFFF,t_70,g_se,x_16)
上面第三个是个函数指针
形参列表强调的是函数的类型,可以把参数名去掉