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类型的函数。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值