函数名就是个指针,它指向函数代码在内存中的首地址.
1 | typedef double (*FuncType) (int data); |
第一行定义了一种函数指针,类型为FuncType
,它指向的函数返回为 double, 形参为一个int. 然后定义了一个名为func的函数.
FuncType ptr = func;
是声明一个指针, 类型为 FuncType
, 指向func函数. 接下来就可以拿ptr当函数用了
1 | void test(int id, FuncType foo) |
定义一个函数test, 它第二个形参是类型为FuncType
的函数指针. 调用时, 最好对第二个形参做转换, 这里用static_cast
再合适不过.