标准精心定义数组类型,但我没有看到 array 的任何定义。
我们可能会说“数组类型的对象”,但是因为无类型对象(例如malloc
分配的空间)被描述为数组而无法正确。
动机 %s
中的fprintf
规范(C11 7.21.6.1/8)说:
参数应该是指向字符类型数组
的初始元素的指针
但是接受代码char s[] = "hello"; printf("%s", s+1);
然后我们传递了指向第二个元素的指针。该定义似乎假设 array 表示任何一组连续对象。
编辑:看到我已经选择了一些“不清楚你要问的”投票,我的问题是:使用的术语 array 的定义是什么通过ISO / IEC 9899:2011?
答案 0 :(得分:0)
数组在C Standard,6.2.5,第20段中定义:
数组类型描述了连续分配的非空集 具有特定成员对象类型的对象,称为元素类型。 数组类型的特征在于元素类型和数字 数组中的元素。据说数组类型是从它派生的 元素类型,如果其元素类型为T,则数组类型为 有时被称为''T'数组'。构造一个数组类型 从元素类型称为''数组类型派生''。