C语言和指针-回顾15-怎么分析复杂的声明

int **(*abc[6])()

  1. adb[6]:下标优先级高于*,所以是abc是数组
  2. *abc[6]:数组里面存的是指针ptr,F替换*abc[6]
  3. int **F():ptr指向一个函数,这个函数的返回值是int**

int *(*abc())()

  1. abc():abc是一个函数
  2. *abc():abc的返回一个指针ptr,F替换*abc()
  3. int * F():ptr指向一个函数F,函数F的返回值是int*

int (**(*abc)())()

  1. (*abc):abc是一个指针
  2. (*abc)():abc是一个指向函数(A)的指针,F替换(*abc)()
  3. int (**F)():A的返回值是指向函数(B)指针的指针,B的返回值是int

int (*(*abc)())[6]

  1. (*abc):abc是一个指针
  2. (*abc)():abc是一个指向函数(A)的指针,F替换(*abc)()
  3. int (*F)[6]:A的返回值是一个指针ptr,ptr指向int数组

int *(*(*(*abc)())[6])()

  1. (*abc):abc是一个指针
  2. (*abc)():abc是一个指向函数(A)的指针,F替换(*abc)()
  3. int *(*(*F)[6])():函数A返回一个指针ptr
  4. (*F)[6]:ptr指向一个数组a,G替换(*F)[6]
  5. int *(*G)():a数组里面存储的是函数(B)指针,B返回int*
原文地址:https://www.cnblogs.com/wuyuntana/p/14970228.html