现在的位置: 首页 > 综合 > 正文

C/C++复杂符号组合语意分析

2013年06月14日 ⁄ 综合 ⁄ 共 736字 ⁄ 字号 评论关闭
文章目录

C/C++复杂符号组合语意分析

法則:右左法則

       从变量开始,从右下角开始,按逆时针旋转,看到符合进行释义。其中()作为括号时,为分界符不用释义,作为函数时释义为“返回××类型的函数”。

实例1
int (*pA[10])(int,int);

分析结果: pA开始首先看到的是[],说明pA是一个数组,逆时针旋转,看到的是×,说明数组内元素是指针,再看到的是括号,继续旋转,看到的是函数,因此说明这个指针指向函数。以此pA的含义是,10个函数指针的数组。 利用typedef定义此实例。typedef int(*MyType)(int,int);MyType pA[10];

实例2
int *Fun(int,int)[10];

分析结果:Fun,开始首先看到的是函数,说明Fun是一个函数,然后看到的是指针,说明Fun函数的功能返回一个指针,然后看到的是数组,说明返回的指针是一个10个元素数组的指针。即Fun是一个返回指向10个元素数组指针的函数。利用typedef定义 typedef int *MyType[10]; MyType Fun(int,int);

说明:

        其实这些复杂符号在编程过程中不应该频繁出现,这样程序可读性会变得生涩难懂。基本上都是通过 typedef 来定义说明增加其可读性。例如上面的两个实例可以用 typedef 按如下模式定义。程序可读性就大大增强。

//实例1的typedef实现
typedef int(*MyType)(int,int);      //typedef 一个函数指针
MyType pA[10];                      //定义函数指针数组。
//实例2的typedef实现
typedef int *MyType[10];            //定义数组指针
MyType Fun(int,int);                //定义返回数组指针的函数。

抱歉!评论已关闭.