什么是声明和声明符以及它们的类型如何按标准解释?

时间:2012-12-10 20:46:01

标签: c++ types c++11 standards declaration

标准究竟如何定义,例如,float (*(*(&e)[10])())[5]声明一个类型的变量“引用指向函数的10指针的数组()返回指向5 float数组的指针”?< / p>

灵感来自discussion with @DanNissenbaum

1 个答案:

答案 0 :(得分:0)

这是我解析float const (*(*(&e)[10])())[5]的方式。首先,确定说明符。这里的说明符是float const。现在,让我们来看看优先级。 [] = () > *。括号用于消除优先级的歧义。考虑到优先级,让我们确定变量ID,即e。因此,e是对函数的10个指针的数组(因为[] > *)的引用(因为() > *),它不带参数并返回,并且指向5浮点数const的数组。因此,说明符排在最后,其余部分根据优先级进行解析。