复杂指针的typedef分解法

----------------------------------------------------------------------------------------

看竖线中间的部分,竖线将复杂的表达式截断,即用复杂指针的分析法作截断处理
int (*(*func)[5][6])[7][8];
       |  a    |
    |       b           |
|           c                    |
a: (*func)  即func是个指针
b: func是个二维数组的指针[5][6],该二维数组的元素是指针类型
c: func是个二维数组的指针[5][6],该二维数组的元素是指针类型,该指针类型的元素指向一个二维数组[7][8],且二维数组[7][8]的元素是int类型

用typedef法分解如下:
typedef int (*PARA)[7][8];
typedef PARA (*func)[5][6];

----------------------------------------------------------------------------------------
int (*(*(*func)(int *))[5])(int *);
          |  a    |
       |       b           |
     |          c                |
|                 d                      |
a: func是个指针
b: func是个函数指针,函数的入参为int*,返回值为指针类型
c: func是个函数指针,函数的入参为int*,返回值为指针类型,该指针类型指向有5个元素的数组,该数组的元素是指针
d: func是个函数指针,函数的入参为int*,返回值为指针类型,该指针类型指向有5个元素的数组,该数组的元素是个函数指针,其函数入参为int*,返回值为int

用typedef法分解如下:
typedef int (*PARA1)(int*);
typedef PARA1 (*PARA2)[5];
typedef PARA2 (*func)(int*);

----------------------------------------------------------------------------------------
int (*(*func[7][8][9])(int*))[5];
       |      a            |
     |           b                  |
|               c                        |
a: func是三维数组[7][8][9],该数组的元素是指针
b: func是三维数组[7][8][9],该数组的元素是函数指针,函数入参是int*类型,返回值是个指针
c: func是三维数组[7][8][9],该数组的元素是函数指针,函数入参是int*类型,返回值是个一维数组指针,该数组有5个元素,元素类型为int

用typedef法分解如下:
typedef int (*PARA1)[5];
typedef PARA1 (*PARA2)(int*);
typedef PARA2 func[7][8][9];

posted @ 2018-11-18 21:06  thinking......  阅读(281)  评论(0)    收藏  举报