函數指針數組在實際工作中的使用

前幾天工作接了一個任務,需要按順序寫好多個函數,調用的時候也比較有規律,早就聽說過函數指針數組,一直也沒使用過,這次查閱了資料使用了一下,巨好用。
網上也很多關於函數指針數組的介紹及指針使用的各種方法,這裏就不對定義做詳細說明了,推薦一本書,C和指針,寫的非常好。關於指針方面,我也是從這本書裏學到的,以後有機會認真在看一遍,再詳細寫一下關於C語言的指針。
先貼代碼

/* 各數字表示 i 表示第幾個數字  1爲第一個  2 第二個  3  第三個 */
/* 1 :B C*/
void show_num_one(int i){
    show_single((Bytenumber)i,Bit1,1);//這裏關於 Bytenumber 和 Bit 是一個枚舉,也是一個十分好用的知識了,可以將參數與數字對應起來,不用一個一個賦值,調用的時候也可以使用數字進行轉換
    show_single((Bytenumber)i,Bit2,1);
}
/* 2 :A B G E D*/
void show_num_two(int i){
    show_single((Bytenumber)i,Bit0,1);
    show_single((Bytenumber)i,Bit1,1);
    show_single((Bytenumber)i,Bit3,1);
    show_single((Bytenumber)i,Bit4,1);
    show_g(i,1);
}
/* 3 :A B G C D*/
void show_num_three(int i){
    show_single((Bytenumber)i,Bit0,1);
    show_single((Bytenumber)i,Bit1,1);
    show_single((Bytenumber)i,Bit3,1);
    show_single((Bytenumber)i,Bit2,1);
    show_g(i,1);
}
/* 4 :F G B C*/
void show_num_four(int i){
    show_single((Bytenumber)i,Bit1,1);
    show_single((Bytenumber)i,Bit2,1);
    show_single((Bytenumber)i,Bit5,1);
    show_g(i,1);
}
/* 5 A F G D C*/
void show_num_five(int i){
    show_single((Bytenumber)i,Bit0,1);
    show_single((Bytenumber)i,Bit5,1);
    show_single((Bytenumber)i,Bit3,1);
    show_single((Bytenumber)i,Bit2,1);
    show_g(i,1);
}
/* 6 : A E F G D C*/
void show_num_six(int i){
    show_single((Bytenumber)i,Bit0,1);
    show_single((Bytenumber)i,Bit4,1);
    show_single((Bytenumber)i,Bit3,1);
    show_single((Bytenumber)i,Bit2,1);
    show_single((Bytenumber)i,Bit5,1);
    show_g(i,1);
}
/* 7 : A B C*/
void show_num_seven(int i){
    show_single((Bytenumber)i,Bit0,1);
    show_single((Bytenumber)i,Bit1,1);
    show_single((Bytenumber)i,Bit2,1);
}
/* 8 : A B E F G D C*/
void show_num_eight(int i){
    show_single((Bytenumber)i,Bit0,1);
    show_single((Bytenumber)i,Bit1,1);
    show_single((Bytenumber)i,Bit4,1);
    show_single((Bytenumber)i,Bit3,1);
    show_single((Bytenumber)i,Bit2,1);
    show_single((Bytenumber)i,Bit5,1);
    show_g(i,1);
}
/* 9 : A B F G D C*/
void show_num_nine(int i){
    show_single((Bytenumber)i,Bit0,1);
    show_single((Bytenumber)i,Bit1,1);
    show_single((Bytenumber)i,Bit3,1);
    show_single((Bytenumber)i,Bit2,1);
    show_single((Bytenumber)i,Bit5,1);
    show_g(i,1);
}
/* 0 : A B E F  D C*/
void show_num_zero(int i){
    show_single((Bytenumber)i,Bit0,1);
    show_single((Bytenumber)i,Bit1,1);
    show_single((Bytenumber)i,Bit4,1);
    show_single((Bytenumber)i,Bit3,1);
    show_single((Bytenumber)i,Bit2,1);
    show_single((Bytenumber)i,Bit5,1);
}




/* 功能 :顯示對應的數字
 * 參數 :num
 * 返回值 : 無
 */
void display(int num){

    void (*show_num[10])(int) = {show_num_zero,show_num_one,show_num_two,show_num_three,show_num_four,show_num_five,show_num_six,show_num_seven,show_num_eight,show_num_nine};


    int i = num/ 100;          //第一位數字
    int j = num/ 10 % 10;      //第二位數字
    int k = num% 10 ;          //第三位數字
    
    show_num[i](1);
    show_num[j](2);
    show_num[k](3);
    
    
}	

這裏是需要顯示三個數字在數碼管屏幕上,每個數字對應的數碼管的函數都已經書寫好後,剛好從0到9對應的數字顯示函數是有順序的,將每個函數的參數設置爲對應的第幾個數字,將這是個函數初始化在一個有十個元素的函數指針數組裏,i,j,k分別代表第一二三個數字要顯示的數,參數剛好爲第一二三位數字,在這裏使用函數指針數組真的是無敵方便了。

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