复杂类型的说明:从变量名处起,根据运算符优先级结合,一步一步分析。
下面以一个比较复杂的类型(int * (*p(int))[ ])为例:
第一步,p先与()结合,说明是一个函数,
第二步,()内有一个int,说明函数有一个形参为int型,
第三步与*结合,说明返回的是一个指针变量,
第四步与[ ]结合,说明该指针变量指向数组,
第五步再与*结合,说明数组中的元素为指针型,
第六步说明数组中的指针元素的类型为int型,
结论,所以这是:p为函数,该函数入参为int,该函数返回一个指针,指向由整型指针变量组成的数组。
char (*(*p())[])():
第一步,p先与()结合,说明是一个函数,
第二步,与*结合,说明返回一个指针变量,
第三步,与[ ]结合,说明该指针变量指向数组,
第四步,与*结合,说明数组中的元素为指针型,
第五步,与()结合,说明是数组中元素是指向函数指针,
第六步,与char结合,说明数组中元素函数指针返回类型为char,
结论,所以这是:函数返回一个指针,该指针指向数组,而数组的元素皆为返回类型为char的函数指针。