# re: CONST、TYPE 和 星号 的故事 回复 更多评论
2008-10-04 16:22 by
unittype -> "int" '数据类型
unittype -> "const" unittype '数据是常量类型
ptrtype -> unittype
ptrtype -> ptrtype "*" '指针类型
ptrtype -> ptrtype "*" "const" '指针是常量类型
为什么需要最后一项呢?其实根据表达式的一般设计,需要优先级什么的加一个括号就行了。也就是说int*const原本可以写成const(int*)。的可惜TM函数指针又是那个鸟样,所以就搞得这么复杂了。
上面的语法安排是优先级组合的典型写法,也就是说这里前缀比后缀优先级更高。因此const int*就是(const int)*。
# re: CONST、TYPE 和 星号 的故事 回复 更多评论
2008-10-06 10:10 by
可以这么看:以*为界,const在*前的是限定*p,在*后面的是限制p。前者限定p指向的值,后者限定指针p。