如何从C++标准推断数组[]的优先级高于指针?

我知道像这样的声明

int* a[5];
int* a[5];

声明a为一个包含 5 个指针的数组int。但是我如何仅通过使用 C++ 标准来推断出这一点?

回答

看看C++的语法就知道了。

ptr-declarator:
    noptr-declarator
    ptr-operator ptr-declarator
noptr-declarator:
    declarator-id attribute-specifier-seqopt
    noptr-declarator parameters-and-qualifiers
    noptr-declarator [ constant-expressionopt] attribute-specifier-seqopt
    ( ptr-declarator )

ptr-operator:
    * attribute-specifier-seqopt cv-qualifier-seqopt
    & attribute-specifier-seqopt
    && attribute-specifier-seqopt
    nested-name-specifier * attribute-specifier-seqopt cv-qualifier-seqopt

因此这个声明

可以写成

int ( * ( ( a )[5] ) );

这是( ( a )[5] )一个noptr说明符( * ( ( a )[5] ) )PTR运营商PTR说明符

一个指向 5 个整数数组的指针的声明看起来像

int ( *a )[5];


以上是如何从C++标准推断数组[]的优先级高于指针?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>