|
二种方法来定义函数指针
①
- #include<stdio.h>
- #include<stdlib.h>
- #include<Windows.h>
- int add(int a, int b)
- {
- return a + b;
- }
- //void msg(char s[])
- //void (*p)(char s[]) 函数指针的定义方法
- //void (*)(char *s) 函数指针的类型
- void msg(char s[])
- {
- MessageBoxA(0,s,s,0);
- }
- void main()
- {
- //方法1
- //定义函数指针的规则
- //1.先把函数拿过来 int add(int a, int b) , add就是一个地址
- //2.把函数名挖空 int (*p)(int a,int b);
- int(*padd)(int a, int b); //函数指针
- //3.赋值
- padd = add;
- printf("%d", padd(11, 19));//30
- //方法2.直接初始化
- void(*pmsg)(char s[]) = msg; //定义函数指针并初始化
- pmsg("心里的雨倾盆的下");
- getchar();
- }
复制代码
②通过typedef构建
- //使用typedef给函数指针类型一个别名
- //typedef没有定义新的类型,给已经有的类型起一个别名,减少输入
- typedef int(*PADD)(int a, int b); //*类型, PADD存储函数地址
- typedef void(*MEG)(char s[]);
- void main()
- {
- PADD padd1 = add; //创建函数指针
- printf("%d",padd1(11,23));
- MEG meg1 = msg;
- meg1("心里的雨倾盆的下");
- getchar();
- }
复制代码
|
|