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