C语言解析 char (*(*x())[5])()

解析: char (*(*x())[5])();

方法一:从内向外分析
1、*x():x是一个无参数函数,该函数的返回值是一个指针。
2、 *(*x())[5]:由于C语言中[]的优先级最高,因此这里要先结合后面的[5],再结合前面的 。于是就变成了:x是一个无参数函数,该函数返回一个指针,且返回的这个指针指向一个(有5个指针元素的)数组。
3、char (
(*x())[5])() :先看后缀得知这是个函数,且无参,再看前缀,结合后缀可知这是一个返回值类型为char的函数,再结合对 *(*x())[5]的分析得出最后结论:x是一个无参数函数,该函数返回一个指针,返回的这个指针指向一个有5个指针元素的数组,该数组的每个元素都可指向一个返回值类型是char且无参数列表的函数。

方法二: typedef重命名
1、typedef char (*fun)(); =》 fun (*x())[5];
2、typedef fun A[5]; =》 A x();
根据上面的简化模式,逐步描述char (
(*x())[5])();的含义:
第一步: A *x(); 声明x是一个无参数函数,该函数返回一个A类型的指针。
第二步: fun (x())[5];声明x是一个无参数函数,该函数返回一个指针,该指针指向一个含有5个fun类型元素的数组。
第三步:char (
(*x())[5])();声明x是一个无参数函数,该函数返回一个指针,该指针指向一个含有5个函数指针元素的数组,数组中的指针元素指向一个无参数列表且返回值为char类型的函数。

发布了34 篇原创文章 · 获赞 1 · 访问量 1460

猜你喜欢

转载自blog.csdn.net/qq_38958704/article/details/99671624
今日推荐