函數指針應用·回調函數·轉換表·

 主要用途:轉換表、回調函數(具體定義問度娘,先面試用法)

一、回調函數:

問題由來:C語言不支持重載

目    的:使一個具體功能的函數可以作用於不同類型

設計方案:對於一個函數,其中可能只是會有一部分使用指針,那麼把這部分抽象出來,再做一個函數,但是需要另主調函數(相對被調函數爲主調)引進的參數變爲 const void* ,並且從調函數也是引進參數爲void const *,然後制定不同類型的從調函數,其中將void*轉換成相應類型,然後進行運算!

示    例:

 

  1. #include<stdio.h> 
  2. //代碼看似用法雞肋,但是就是這個意義 
  3. bool a(void * k,void  * l ){ 
  4.     return *(int*)k>*(int*)l; 
  5. bool b(void  * h,void  * j ){ 
  6.     return *(float*)h- *(float*)j>0; 
  7.  
  8. bool k(void * m,void * n, bool(*p)(void * ,void * ) ) { 
  9.     return p(m,n); 
  10.  
  11. int main(){ 
  12.     int c=1; 
  13.     int b=2; 
  14.     if ( k(&c,&b,a )){ 
  15.         printf("big\n"); 
  16.     } 
  17.     else  
  18.         printf("small\n"); 
  19.     return 0; 

二、轉換表

轉換表就是函數指針數組,用其代替switch語法達到不同參數判斷

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章