3; RR和 3
/. 下面 $))3 的值是多少,有什么问题?
$))*1
31Z*
$1 *3
1$R3
答 : 如 果 你 按 这 个 写 出 来 , 肯 定 编 译 不 过 去 。 最 明 显 的 : 1$R3 应 该 改 为
1$R(3)
还有 *3 改为 *(3);
1)$1/)*1)31
/ 下面的语句是什么意思?如何声明或定义才使它们更易懂?&. 分+
&3&++&+
&3&++
&3+&+
&3&>&3+&++.+&+
>&3 &)>&3+&+++&+
答:
第一个:&3&++&+
先一步一步的分析:首先是被左边的&+括起来的3&+。
&+里面&+的优先级高于3,所以 &+先是一个函数;
&+3&+说明这个函数返回一个指针;
&2+&3&++&+这个函数返回的指针指向一个函数;
&/+&3&++&+
&+最后这个函数返回一个整型数。
第二个:&3&++
有上面的打基础了,这回好多了。大致还是那个意思,但是就是由函数变成了数
组,所以还更简单些,具体的含义是:&+函数返回的指针指向一个具有整型数的
数组。
第三个:&3+&+
这个就是上两个的翻版:一个存有指针的数组3,该指针指向一个函数,该函
数返回一个整型数。
第四个:&3&>&3+&++.+&+
&+最里面的&3+&+意思是一个指向函数的指针;
&+加个前缀 >&3+&+,表示一个指向返回类型为 > 的函数的指针;
&2+套个马甲&>&3+&++的意思就是类型强制转换;
&/+&>&3+&++. 就是把 . 强制转换成前面说的那个类型的指针;
&+那么好,现在&>&3+&++. 是一个指针了,这个指针指向了一个函数,我们用宏
定义简化一下,看着太麻烦:
&5+67&>&3+&++.,现在&3&>&3+&++.+&+这个怪物就可以简化成:&3+&+
&?+别忘了 是一个指向函数的指针,既然这样3 就是函数了,那么上面的结
果再次被简化成:&+,这不就是函数的调用么!
至此这个怪物函数的含义和简化形式就都给出了,我就不再总结了。不过我还想
再给出一个简化形式,这会对下面的问题有启示: