NDK啟航篇——C語言基礎(函數指針)

昨天介紹了指針類型、空指針、指針運算,今天來寫一下函數指針

函數指針

  • 函數指針的定義:函數的返回值類型(函數指針的名稱)(函數的參數列表)
  • 獲取函數的地址,可以直接通過函數名獲取與加&(取地址符)函數名稱一樣
//尖括號代表系統類庫,std表示標準,io表示輸入輸出 引入標準輸入輸出  #include<stdio.h>  //lib表示類庫 引入標準類庫  #include<stdlib.h>  //windows系統標準頭文件  #include<windows.h>  void dialog(){  //windows彈窗    MessageBox(0,"我是內容","我是標題",0);  }  void main(){  //獲取函數的地址,可以直接通過函數名獲取與加`&(取地址符)`函數名稱一樣  printf("%#xn",dialog);  printf("%#xn",&dialog);  //調用dialog函數    dialog();  //定義函數指針:函數的返回值類型(函數指針的名稱)(函數的參數列表)  void(*fun_dialog)() = dialog;  //用函數指針調用dialog函數  fun_dialog();  getchar();  }
  • 使用場景
    • 把函數當作另一個函數的參數
  • 通過函數指針把函數當作另一個函數的參數代碼如下:
int add(int a , int b){    return a + b;  }  int minus(int a , int b){    return a - b;  }  //fun_dialog函數需要傳遞一個函數指針參數  void fun_dialog(int(*p)(int a,int b),int c,int d){    int i = p(c,d);    printf("%dn",i);  }  void main(){  //加法    fun_dialog(add,1,2);  //減法    fun_dialog(minus,2,1);    getchar();  }

好了,函數指針到這裡就結束了,明天寫動態內存分配,欲速則不達,慢慢來不着急。

這裡是彩蛋哦,肯定有人會問這就結束了,指針函數呢? ?,指針函數和函數指針並沒有什麼關係,非常簡單,就是函數的返回值是指針而已,前面已經講過指針是什麼了所以就不在啰嗦了!

指針函數的定義:返回值類型 * 方法名(參數)