二种方法来定义函数指针

 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 }

 

posted on 2016-08-10 22:01  睡着的糖葫芦  阅读(13737)  评论(0编辑  收藏  举报