复杂指针的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];

浙公网安备 33010602011771号