二种方法来定义函数指针
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 }