更新
起个别名只是为了让函数中的变量描述更加通俗易懂,有时候你可以直接引用不需要传。所以平时不传或者直接把函数声明搬过来传入都可以,在大工程中为了方便理解变量名和程序严谨性所以起别名传入。
至于我为什么会啰里八嗦一大堆纯粹因为我是傻逼。
作用
有时,我们需要对不同算法进行相同的测试,例如:时间消耗情况。所以我们需要在我们计算时间消耗函数中把算法函数作为参数传入,这该怎么做呢?
CODE
// 排序算法函数的别名
typedef void (*sortHandler)(SortTable *);
// 测试sortName的排序算法
void testSort(const char *sortName, sortHandler sort, SortTable *table);
解释
首先,typedef
定义了一个指针*sortHandler
,指向了一个参数为SortTable*
且返回值为void
的函数,这就给这个函数起了个别名,使其有了个类型,类似于int
。
接着,在测试函数中传入了参数sortHandler sort
,代表了一个符合sortHandler
类型条件的sort
函数。
这样便完成了函数的传入,只要函数类型符合,就能传入,如此我们便能对解决同类型问题的算法进行测试,例如排序算法,计算不同排序算法之间的耗时差异。