您的位置:首页 > 编程语言 > C语言/C++

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

2019-07-13 19:55 1571 查看

形如:

[code]typedef void (*sss) (int a);

就叫做函数指针类型。

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

[code]#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 是几乎相同的(有一点区别,但我也不知道区别在何处)。

 

②再看一个东西:

 

[code]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也没有太大区别。

 

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: