NDK啟航篇——C語言基礎(函數指針)
- 2020 年 4 月 1 日
- 筆記

昨天介紹了指針類型、空指針、指針運算,今天來寫一下函數指針
函數指針
- 函數指針的定義:
函數的返回值類型(函數指針的名稱)(函數的參數列表)
- 獲取函數的地址,可以直接通過函數名獲取與加
&(取地址符)
函數名稱一樣
//尖括號代表系統類庫,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(); }
好了,函數指針到這裡就結束了,明天寫動態內存分配,欲速則不達,慢慢來不着急。
這裡是彩蛋哦,肯定有人會問這就結束了,指針函數呢? ?,指針函數和函數指針並沒有什麼關係,非常簡單,就是函數的返回值是指針而已,前面已經講過指針是什麼了所以就不在啰嗦了!