当我使用螺旋规则时,我在10个螺旋步骤内的下线混淆.有更快的方法吗?
// compiles in VC++ 2010
const void * const ** const volatile *** const **** _foo_;
Run Code Online (Sandbox Code Playgroud)
例如ptr是指向指向指针的指针的指针,它们都是const void但是其中2个是volatile void const
Pau*_*l R 13
const void * const ** const volatile *** const **** p
Run Code Online (Sandbox Code Playgroud)
声明p指向指向指向指针的指针指向指针的指针指向指向const指针的指针指向指向const指针的const指针
使用指针和引用声明,您只需从右到左阅读:
ptr是指向指向指向指针的const指针的指针,指针指向const volatile指向指向const指向const未知类型对象的指针的指针的指针的指针.
如果你遵循放任何的指引const或volatile预选赛后第一类型说明符(即void const *),而再之前,它(即const void *),那么你就可以一直从右向左读的; 否则,当你到达左手边时,你有时会有轻微的打嗝.
螺旋"规则"偶尔对涉及数组或函数的声明有用,其中声明的名称不是声明中的最后一个.在这种情况下,名称后面没有任何内容,它会退化为从右向左阅读.
那是因为没有螺旋规则.基本上,您首先处理操作数,然后在左侧处理操作数,在两种情况下都向外处理,并遵循括号.而cv-qualifiers通常会限定他们左边的内容.由于此声明右侧没有操作数,因此它只是从右到左:指向指向指向指针的指针的指针指向指向const指针的指针指向指向const指针的指针指向(const)void.最后一个const是因为最后的const在左边没有任何东西,所以我们必须把声明看作是void const,而不是const void.除此之外,如果你忘记误导的螺旋,声明应该没有问题.
| 归档时间: |
|
| 查看次数: |
278 次 |
| 最近记录: |