先来个简单的
typedef int myinteger;
myinteger i; // 相当于 int i;
这个比较好懂,直接给int这种整型类型起个别名。但一涉及到函数指针我就懵逼了,看了将近一天也有点晕,感觉懂了但还是不理解。就是向下面这个例子。
例子1
void (*b[10]) (void (*)());
typedef void (*pFun1)();
typedef void (*pFun2)(pFun1);
最简形式:pFun2 b[10];
主要不理解的地方就是怎么语法看起来这么怪呀,和上面我也感觉是有相似之处,但到底是有什么样的关联,这很令人头大。
typedef void (*pFun1)();==用pFun1表示一个无参数,返回类型为void的函数指针
typedef void (*pFun2)(pFun1);==用pFun2表示一个参数是pFun1,返回类型为void的函数指针
void (*b[10]) (void (*)());==b[10]表示10个参数是void(*)()类型的函数指针,返回值为void的函数指针
void(*)()参数类型就是typedef 定义的pFun1,b[10]的元素就是pFun2表示的函数指针,所以可以 pFun2 b[10]来定义
我有点疑惑,请问为什么typedef void (*pFun1)();不能仿照上面的简单例子中的typedef int myinteger,写成typedef void (*)() pFun1;呢,这样不是更简单?
希望对您有帮助:https://blog.csdn.net/it_xiangqiang/category_10581430.html