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

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

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


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

参数应该是指向字符类型数组的初始元素的指针

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


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

数组在C标准 6.2.5第20段中定义:

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