主要用途:转换表、回调函数(具体定义问度娘,先面试用法)
一、回调函数:
问题由来:C语言不支持重载
目 的:使一个具体功能的函数可以作用于不同类型
设计方案:对于一个函数,其中可能只是会有一部分使用指针,那么把这部分抽象出来,再做一个函数,但是需要另主调函数(相对被调函数为主调)引进的参数变为 const void* ,并且从调函数也是引进参数为void const *,然后制定不同类型的从调函数,其中将void*转换成相应类型,然后进行运算!
示 例:
- #include<stdio.h>
- //代码看似用法鸡肋,但是就是这个意义
- bool a(void * k,void * l ){
- return *(int*)k>*(int*)l;
- }
- bool b(void * h,void * j ){
- return *(float*)h- *(float*)j>0;
- }
- bool k(void * m,void * n, bool(*p)(void * ,void * ) ) {
- return p(m,n);
- }
- int main(){
- int c=1;
- int b=2;
- if ( k(&c,&b,a )){
- printf("big\n");
- }
- else
- printf("small\n");
- return 0;
- }
二、转换表
转换表就是函数指针数组,用其代替switch语法达到不同参数判断
转载于:https://blog.51cto.com/treap/1057181