C中“array”的定义是什么?

时间:2015-05-30 12:53:59

标签: c arrays language-lawyer definition

标准精心定义数组类型,但我没有看到 array 的任何定义。

我们可能会说“数组类型的对象”,但是因为无类型对象(例如malloc分配的空间)被描述为数组而无法正确。

动机 %s中的fprintf规范(C11 7.21.6.1/8)说:

  

参数应该是指向字符类型数组

的初始元素的指针

但是接受代码char s[] = "hello"; printf("%s", s+1);然后我们传递了指向第二个元素的指针。该定义似乎假设 array 表示任何一组连续对象

编辑:看到我已经选择了一些“不清楚你要问的”投票,我的问题是:使用的术语 array 的定义是什么通过ISO / IEC 9899:2011?

1 个答案:

答案 0 :(得分:0)

数组在C Standard,6.2.5,第20段中定义:

  

数组类型描述了连续分配的非空集   具有特定成员对象类型的对象,称为元素类型。   数组类型的特征在于元素类型和数字   数组中的元素。据说数组类型是从它派生的   元素类型,如果其元素类型为T,则数组类型为   有时被称为''T'数组'。构造一个数组类型   从元素类型称为''数组类型派生''。