复杂类型的解读

复杂类型的定义在系统编程时往往是必要的,因此我们需要掌握,至少是理解构造复杂数据类型的基本方法。

变量定义的核心是标识符,解读变量类型要从标识符开始,从内向外,并结合优先级,一步步解读。

1.被()括起来的部分

2.后缀操作符

3.前缀操作符

4.在类型说明符最左端的基本类型或已定义的构造类型

[]和()的优先级高于*的优先级

例子:

1. int *tab[13]

   ·tab与[]结合,说明是个数组

   ·再与int *结合,说明数组元素是int指针

   ·tab是一个包含13个指向int类型指针的数组

2. int (*tabp)[15]

   ·tabp与*结合,说明是个指针

   ·再与[]结合,说明指向一个int型数组

   ·tabp是一个指向包含15个元素的int数组的指针

3. int (*p)(int)

   ·p与*结合,说明是个指针

   ·再与()结合,说明指向一个函数,参数类型为int,返回类型为int

   ·p是一个函数指针

4. char (*fn(int))[8]

   ·fn与()结合,说明是个函数,参数类型是int

   ·再与*结合,说明函数返回一个指针

   ·再与[]结合,说明返回的指针指向一个char型数组

   ·fn是一个返回指向具有8个char型元素数组指针的函数,参数是int类型

5. int *(*p(int))[3]

   ·p与()结合,说明是一个函数,返回一个指针

   ·再与[]几何,说明返回的指针指向一个长度为3的指针数组

   ·p是一个参数为int,返回一个指向长度为3的指针数组的指针的函数

6. char (*(*fn2(int))[])(double)

   ·fn2与()结合,说明是一个函数,参数类型为int

   ·再与*结合,说明函数返回一个指针

   ·再与[]结合,说明函数返回的指针指向一个数组

   ·再与*结合,说明函数返回的数组元素是指针

   ·再与()结合,说明数组元素指针指向一个参数为double,返回为char的函数

   ·fn2是一个返回函数指针数组的函数,该数组元素指向一个参数int返回char的函数

原文地址:https://www.cnblogs.com/TaoyzDream/p/3675619.html