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