[]也是C中的声明符(在参数声明中使用时)吗?

时间:2013-07-22 17:34:31

标签: c function-declaration

6.7.6声明者

  

每个声明符声明一个标识符,并声明当它的操作数相同时   表单作为声明符出现在表达式中,它用。指定一个函数或对象   范围,存储持续时间和声明说明符指示的类型。

还说明了参数的语法

parameter-declaration:
    declaration-specifiers declarator
    declaration-specifiers abstract-declarator(opt)

对于给定的函数原型

int f( int a[], int n); 

int a[]使用声明符a[]声明一个参数,声明标识符为a


如果是

int f( int [], int n);

int []声明参数是一个数组int ,没有标识符 []是否也是声明者?(我认为不是因为它没有声明标识符,但参数的语法表明它是!)

1 个答案:

答案 0 :(得分:6)

在无标识符参数声明中,您有一个抽象声明符。也就是说,[]中的int f(int [], int n)是数组的抽象声明符。您可以在ISO / IEC 9899:2011(C11标准)中的§6.7.6声明符和§6.7.7类型名称章节中找到更多内容。