前段时间调试Caffe源码程序,在调试的过程碰到函数指针问题,因为第一次接触,迷惑了很久,在此归纳一些,以备知识储存!
函数指针字义类型如下:
typedef int (*fun)(int) 其中类型可为int,float,void等等。
example:比如算术运算中的加减乘除运算,可以统一进行定义。
#include "iostream"
typedef float(*fun)(float,float);
float su(float a, float b)
{
return (a + b);
}
float reduc(float a, float b)
{
return (a - b);
}
float rid(float a, float b)
{
return (a * b);
}
float divisio(float a, float b)
{
return (a / b);
}
enum MyEnum
{
sum,
reduce,
ride,
divi
};
void calculate(int order,float a,float b)
{
fun words[4] = { &su, &reduc, &rid, &divisio };
fun bb = words[order];
printf("%f", (*bb)(a, b));
}
void main()
{
calculate(ride, 5, 6);
}