【C++ & Opencv】【第七天】typedef 定义函数指针类型

形如:

typedef void (*sss) (int a);

就叫做函数指针类型。

①通过下面一个例子理解一下此类型:

#include <iostream>

using namespace std;

char(*pFun)(int);

char glFun(int a)
{
	cout << a << endl;
	return a;
}

int main() {
	pFun = glFun;
	(*pFun)(2);
	return 0;
}

       以上程序中,主函数的第一句 pFun = glFun 改成 pFun = &glFun 也是可以运行出结果的。上网查了一下,有人说

对于char fun(int)这种函数定义,fun 与 &fun 是几乎相同的(有一点区别,但我也不知道区别在何处)。

 

②再看一个东西:

 

void tesst()
{
    typedef void (*FUN)();    //m,
    typedef void (FUN_1)();    //n
    void f1();
     
    FUN f;                //1
    FUN *pf;            //2
 
    f = f1;                //a
    pf = f1;            //b
    pf = &f1;            //c
}

问:abc、1和2、m和n 分别有什么区别?

网上有人答:  typedef void (*FUN)();    //m,
                        typedef void (FUN_1)();    //n

                        FUN是函数指针类型,FUN_1是函数类型
                        所以,    
                        FUN f;                //1
                        FUN *pf;            //2

                        f是函数指针变量,pf是函数指针的指针变量

                        而又由于上面我们说到的,f1 和 &f1 是几乎相同的,所以abc也没有太大区别。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值