主要用途:轉換表、回調函數(具體定義問度娘,先面試用法)
一、回調函數:
問題由來: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語法達到不同參數判斷