也是C中的声明符(在参数声明中使用时)吗?
6.7.6声明者说
每个声明符声明一个标识符 ,并断言当与声明符相同的表单的操作数出现在表达式中时,它指定一个函数或对象,其范围,存储持续时间和声明说明符指示的类型。
并且还说明了参数的语法 :
parameter-declaration: declaration-specifiers declarator declaration-specifiers abstract-declarator(opt)
对于给定的函数原型
int f( int a[], int n);
int a[]
使用声明符a
int a[]
声明一个参数,声明一个标识符a
。
如果是的话
int f( int [], int n);
int []
declares参数是一个int数组,没有标识符。
[]
也是声明者吗? (我认为不是因为它没有声明标识符,但参数的语法表明它是!)
在无标识符参数声明中,您有一个抽象声明符。 也就是说, int f(int [], int n)
中的int f(int [], int n)
是数组的抽象声明符。 您可以在§6.7.6 声明符和ISO / IEC 9899:2011中的§6.7.7 类型名称 (C11标准)中找到更多内容。