c语言定义函数指针和typedef简写

一、方法1

#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();
}

猜你喜欢

转载自blog.csdn.net/u012841414/article/details/82504993