右左法则

右左法则

    对于一些长或者复杂的声明的名称,理解起来有点困难。但是右左法则能很好的解决这个问题。

    而右左法虽不是不是C标准里面的内容,它是从C标准的声明规定中归纳出来的方法。C标准的声明规则,是用来解决如何创建声明的,而右左法则是用来解决如何辩识一个声明的。

这个法则的具体的应用:从内部括号开始阅读(必须从变量名开始)声明,向右看,然后向左看。当碰到一个括号的时候就调转阅读的方向。括号内的所有的内容都是分析完毕就跳出括号的范围。直到声明都被分析完毕。

举例:

Int *(* (*fpl) (int)) [10];

阅读的步骤:

1.从变量的名开始------fpl.

2.往右看,什么也没有,碰到了),因此往左看,碰到了一个*------一个指针。

3.跳出括号。碰到(int-------一个带一个int参数的函数。

4.往左看,发现一个*-------函数返回一个指针。

5.跳出括号,往右看,碰到[10]---------一个10元素的数组。

6.往左看,发现一个*--------指针。

7.往左看,发现int-----int 类型。

fpl被声明成为一个函数指针,该函数返回指向指针数组的指针。

再来看一个例子:

int *(*(*arr[5])())();

1.从变量名开始------------arr。

2.往右看,发现是一个数组--------------一个5元素的数组

3.向左看,发现一个*----------指针

4.跳出括号,向右看,发现()---------不带参数的函数

5.向左看,发现*---------------函数返回一个指针

6.跳出括号,向右看,发现()---------不带参数的函数

7.向左看,发现*---------------函数返回一个指针

8.继续向左,发现int------------int类型

总结:arr被声明成为一个函数的数组指针,该函数返回指向函数指针的指针

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值