【问题标题】:Is [ ] also a declarator (when used in parameter declaration) in C?[ ] 也是 C 中的声明符(在参数声明中使用时)吗?
【发布时间】:2013-07-22 17:34:30
【问题描述】:

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 数组,没有标识符。
[] 也是声明符吗?(我认为不是,因为它没有' t 声明一个标识符,但参数的语法说它是!)

【问题讨论】:

  • 每个声明器声明一个标识符[] 是一个抽象声明符
  • @n.m.;什么是抽象声明符?我只是在考虑这个!
  • @n.m.;谢谢。 Here 是。
  • 你引用了一个提到它的作品。我猜这个定义应该在 6.7.7 左右。

标签: c function-declaration


【解决方案1】:

在无标识符参数声明中,您有一个抽象声明符。也就是说,int f(int [], int n) 中的[] 是数组的抽象声明符。您可以在 ISO/IEC 9899:2011(C11 标准)的 §6.7.6 Declarators 和 §6.7.7 Type names 部分找到更多信息。

【讨论】:

    猜你喜欢
    • 2017-01-26
    • 1970-01-01
    • 1970-01-01
    • 2020-07-17
    • 1970-01-01
    • 1970-01-01
    • 2015-03-01
    • 1970-01-01
    相关资源
    最近更新 更多