形如:
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也没有太大区别。