更多复杂声明式的解释
MSDN原文:http://msdn.microsoft.com/en-us/library/1x82y1z4(v=vs.80).aspx
译文:
你可以将任意一个声明包含在有关闭的括号中,从而在复杂的声明式中指定一个特殊的解释。复杂的声明式指的是它的标识符被超过一个的数组修饰符,指针修饰符或者函数修饰符所限定。它能够在单个的标识符上采用多种组合的数组修饰,指针修饰或者函数修饰。通常typedef可以应用于一些简单的标识符。详情请看“Typedef Declarations”。
在解释复杂声明式的过程中,括号和括弧(就是那些位于标识符右端的修饰符)要先于星号*(就是那些位于标识符左端的修饰符)。括号和括弧有相同的优先级,并且都是从左到右结合的。在声明式被完全解释之后,类型修饰才作为最后一个步骤被应用。通过使用括弧,你可以覆盖默认的结合顺序,然后强制构建一个特殊的解释。但是决不要用一个括弧包含一个标识符名称自身,因为这样会被误认为是一个参数列表。
一种解释复杂声明式的简单方法是使用以下的四个步骤,按从里到外的顺序解读声明式:
1、从标识符开始,向右看一个或多个括号或括弧。
2、解释完这些括号或括弧之后,向左看一个星号*。
3、如果你在任何阶段遇到了一个右括号,那么返回,然后为一切有括号的
式子应用规则1和规则2。
4、为这个解释应用类型修饰。
char *( *(*var) () )[10];
^ ^ ^ ^ ^ ^ ^
7 6 4 2 1 3 5
在这个例子中,解释的步骤可如下以数字按序编号,然后依次解释:
1、标识符var被声明为
2、一个指向……的指针
3、一个返回……的函数
4、一个指向……的指针
5、一个含有10个……元素的数组
6、一个指向……的指针
7、一个char型数据
标识符var被声明为指向返回一个指向含有10个指向char型数据的指针元素的数组的指针的函数的指针。

浙公网安备 33010602011771号