You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

关于使用指定表述描述C语言声明`int * name[4]`的技术问询

如何用C17标准的声明规则描述int * name[4]

嗨,我来帮你用C17标准里的官方表述规则拆解这个声明。C17标准的6.7.6.2第3款专门定义了数组类型的声明格式,先给你列出来这段规则原文:

如果声明的形式为“T D1”,其中D1属于以下形式之一:
D [ 类型限定符列表可选 赋值表达式可选 ]
D [ 类型限定符列表可选 赋值表达式 ]
D [(注:此处原文存在截断,但基于现有规则足以分析目标声明)

现在把int * name[4]套进这个“T D1”的模板里:

  • 这里的Tint *,也就是指向int类型的指针
  • D1name[4],完美匹配规则里的第二种形式:D [ 类型限定符列表可选 赋值表达式 ]——其中Dname,赋值表达式是4(用来指定数组的元素数量),而且没有添加任何类型限定符(比如constvolatile这类)。

按照C标准的声明解读逻辑,数组的优先级高于指针,所以用标准表述来描述这个声明就是:

声明int * name[4]将标识符name定义为一个包含4个元素的数组,数组的每个元素类型为指向int类型的指针;数组的元素数量由赋值表达式4指定,声明中未使用类型限定符。

备注:内容来源于stack exchange,提问作者ALICEZzz

火山引擎 最新活动