typedef 函数指针的用法

本文详细解析了C++中函数指针的定义、使用及实例,通过三个具体的例子展示函数指针如何实现参数传递和动态调用,深入探讨了函数指针在简化代码结构、提高程序灵活性方面的强大作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

typedef int (*MYFUN)(int, int);
上面的例子定义MYFUN 是一个函数指针,函数类型是带两个int 参数,返回一个int
在分析这种形式的定义的时候可以用下面的方法:
先去掉typedef 和别名,剩下的就是原变量的类型.
去掉typedef和MYFUN以后就剩:
int (*)(int, int)

下面的三个例子都是在vc6上编译通过。
例1:
#include <stdio.h>
char (*pFun)(int);  
char glFun(int a)
{
         printf("%d\n",a);
         return 0;
}  
void main()  
{  
    pFun = glFun;  
    (*pFun)(2);
}

例2
#include <stdio.h>
typedef char (*PTRFUN)(int);
PTRFUN pFun;              
char glFun(int a)
{
         printf("%d\n",a);
         return 0;
}
void main()
{
        pFun = glFun;
         (*pFun)(2);
}

例3:
#include <stdio.h>
typedef int (*FP_CALC)(int, int);
int add(int a, int b)
{
         return a + b;
}

int sub(int a, int b)
{
         return a - b;
}

FP_CALC calc_func(char op)
{
         switch (op)
         {
                   case '+': return add;
                   case '-': return sub;

                   default:  return NULL;

         }
         return NULL;

}

//s_calc_func为函数,它的参数是 op,
//返回值为一个拥有两个int参数、返回类型为int的函数指针
int (*s_calc_func(char op)) (int, int)
{
        return calc_func(op);
}

int calc(int a, int b, char op)
{
         FP_CALC fp = calc_func(op);             //根据预算符得到各种运算的函数的地址
         //int (*fp)(int, int) = s_calc_func(op);//用于测试,等价于上一行
         if (fp)
                   return fp(a, b);          //根据上一步得到的函数的地址调用相应函数,并返回结果
         else
                   return -1;

}

void main()
{
         int a = 100, b = 20;
         printf("calc(%d, %d, %c) = %d\n", a, b, '+', calc(a, b, '+'));
         printf("calc(%d, %d, %c) = %d\n", a, b, '-', calc(a, b, '-'));
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值