永发信息网

以下声明代表什么?

答案:1  悬赏:0  手机版
解决时间 2021-01-18 15:03
以下声明代表什么?
最佳答案
C语言所有复杂的指针声明,都是由各种声明嵌套构成的。如何解读复杂指针声明呢?右左法则是一个既著名又常用的方法。
右左法则:首先从未定义的标识符开始阅读(而不是从括号读起,之所以是未定义的标识符,是因为一个声明里面可能有多个标识符,但未定义的标识符只会有一个),然后往右看,再往左看。每当遇到圆括号时,就应该掉转阅读方向。一旦解析完圆括号里面所有的东西,就跳出圆括号。重复这个过程直到整个声明解析完毕。

根据上面的理论讨论你这几个声明(不是全部):

double (*f[10])();
f右边是一个[]运算符,说明func是一个具有10个元素的数组,f的左边有一个*,说明f的元素是指针,要注意这里的*不是修饰f的,而是修饰f[5]的,原因是[]运算符优先级比*高,f先跟[]结合,因此*修饰的是f[5]。跳出这个括号,看右边,是一对圆括号,说明f数组的元素是函数类型的指针,它所指向的函数具有double类型的返回值。

int *((*b)[10]);
b被一个圆括号包含,左边又有一个*,那么b是一个指针,跳出括号,右边是一个[]运算符号,说明b是一个指向数组的指针,现在往左看,左边有一个*号,说明这个数组的元素是指针。总结一下,就是:b是一个指向数组的指针,这个数组的元素是指向int类型元素的指针。

Long(*fun)(int );
首先找到那个未定义的标识符,就是fun,它的外面有一对圆括号,而且左边是一个*号,这说明fun是一个指针,然后跳出这个圆括号,先看右边,也是一个圆括号,这说明(*fun)是一个函数,而fun是一个指向这类函数的指针,就是一个函数指针,这类函数具有int类型的形参,返回值类型是 Long。

剩下3个指针声明你自己根据上面的例子来解析吧!
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
如何评价蒋介石
半夜里她爬下床来,伸手到窗外试试,漆黑的,
空调的冰种没了,会出现什么状况`?
ipo新规下打新收益率怎么计算
河南哪家网络公司比较好
描写黑色泰迪狗的作文
大数据从哪里来
递等式。(能简算的要简算)9.6×9.9 0.96
少年包青天III之天芒传奇三大神器 笑娘
徒步从宁德虎贝乡到支提寺要怎么走
电工,开关怎么接呀。新型开关。有三个蓝线,
已知二分之a=3分之b,=0求代数式a^2-4b^2分之
暗黑 hackmap 所有的快捷键
满速清的简介
从武太闸到南湖花园南国小区怎么走
推荐资讯
怎样把期货的钱转到银行卡上啊,我不会转,有
万宁到三亚的长途汽车里程是多少公里
请你根据下表中所提供的信息以“Learn to exp
2千米减4000米等于多少千米
三地小小鱼图字谜306期
谁能把《爱上你几乎就幸福了》这本书,全本免
美篇如何分享到其它的app如微博,66小区
农行自动柜员机能不能支持跨行转账?
如何使用PS调出电影色调
神圣什么意思
数码印花热转印车间产生的烟雾对人体有什么危
109法系1500法伤是怎么到达的
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?