二種方法來定義函數指針
1 #include<stdio.h> 2 #include<stdlib.h> 3 #include<Windows.h> 4 5 int add(int a, int b) 6 { 7 return a + b; 8 } 9 10 //void msg(char s[]) 11 //void (*p)(char s[]) 函數指針的定義方法 12 //void (*)(char *s) 函數指針的類型 13 14 void msg(char s[]) 15 { 16 MessageBoxA(0,s,s,0); 17 } 18 19 20 void main() 21 { 22 //方法1 23 //定義函數指針的規則 24 //1.先把函數拿過來 int add(int a, int b) , add就是一個地址 25 //2.把函數名挖空 int (*p)(int a,int b); 26 int(*padd)(int a, int b); //函數指針 27 //3.賦值 28 padd = add; 29 printf("%d", padd(11, 19));//30 30 31 //方法2.直接初始化 32 void(*pmsg)(char s[]) = msg; //定義函數指針並初始化 33 pmsg("心里的雨傾盆的下"); 34 35 getchar(); 36 }
通過typedef構建
1 //使用typedef給函數指針類型一個別名 2 //typedef沒有定義新的類型,給已經有的類型起一個別名,減少輸入 3 typedef int(*PADD)(int a, int b); //*類型, PADD存儲函數地址 4 typedef void(*MEG)(char s[]); 5 6 void main() 7 { 8 PADD padd1 = add; //創建函數指針 9 printf("%d",padd1(11,23)); 10 11 MEG meg1 = msg; 12 meg1("心里的雨傾盆的下"); 13 14 getchar(); 15 }
