数组 (Array)是有序的元素序列。 [1] 若将有限个类型相同的变量的集合命名,那么这个名称为数组名。组成数组的各个变量称为数组的分量,也称为数组的元素,有时也称为 下标变量 。用于区分数组的各个元素的数字编号称为 下标 。数组是在程序设计中,为了处理方便, 把具有相同类型的若干元素按有序的形式组织起来的一种形式。 [1] 这些有序排列的同类 数据元素 的集合称为数组。

数组是用于储存多个相同类型数据的集合。

在C语言中, 数组 [2] 属于构造 数据类型 。一个数组可以分解为多个 数组元素 ,这些数组元素可以是基本数据类型或是 构造类型 。因此按数组元素的类型不同,数组又可分为数值数组、 字符数组 指针数组 、结构数组等各种类别。 关于 可变长数组 (VLA)的问题:原来的C89标准中是不允许可变长数组出现的,但是在C99标准中,加入了对VLA的支持 [3] ,但是支持的 编译器 不多,而且由于 栈溢出 安全问题 ,没有太多的人敢用这个可变长数组,所以在C11标准中又把它规定为可选实现的功能了 [4] 如果有过用其它语言编程的经历,那么想必会熟悉数组的概念。由于有了数组,可以用相同名字引用一系列变量,并用数字(索引)来识别它们。在许多场合,使用数组可以缩短和简化程序,因为可以利用索引值设计一个循环,高效处理多种情况。数组有上界和 下界 ,数组的元素在上下界内是连续的。因为 Visual Basic 对每一个索引值都分配空间,所以不要不切实际声明一个太大的数组。 此处数组是程序中声明的变量数组。它们不同于控件数组, 控件数组 是在设计时通过设置控件的 Index 属性规定的。变量数组总是连续的;与控件数组不同的是,不能从一个数组的中部加载或卸载数组元素。 一个数组中的所有元素具有相同的数据类型(在C、C++、 Java pascal 中都这样。但也并非所有涉及数组的地方都这样,比如在Visual Foxpro中的数组就并没这样的要求)。当然,当数据类型为 Variant 时,各个元素能够包含不同种类的数据(对象、 字符串 、数值等等)。可以声明任何基本数据类型的数组,包括用户自定义类型和对象变量。 如果要用户输入的是一个数组,一般是用一个循环,但是在输入前也需要固定数组的大小。 compact 变长数组 没有太大的关系,也应该用不到变长数组。因为一般的传数组到函数中就是传数组的地址和元素的个数的,那只是一个提示,不是要求。 原型可以这样写(假设数组的元素是type):
int compact(type *Array,int Count)
数组类型说明 在 C语言 中使用数组必须先进行类型说明。 数组说明的一般形式为:类型说明符 数组名 [常量 表达式 ],……; 其中,类型说明符是任一种基本数据类型或构造数据类型。数组名是用户定义的数组 标识符 方括号 中的常量表达式表示 数据元素 的个数,也称为数组的长度。 数组就是一次性定义相同数据类型的一组变量数组定义。 [1]  John Sharp.Visual C#从入门到精通.清华大学出版社,2016:185 [2] C语言一维数组的定义和引用 .c语言中文网 [引用日期2014-12-21] [3]  C语言标准化委员会(ISO/IEC JTC1/SC22/WG14).ISO/IEC 9899:1999 (E).瑞士:国际标准化组织(ISO)、国际电工委员会(IEC),1999:xi [4]  C语言标准化委员会(ISO/IEC JTC1/SC22/WG14).ISO/IEC 9899:2011 (E).瑞士:国际标准化组织(ISO)、国际电工委员会(IEC),2011:177 [5]  陈国君.Java程序设计基础.北京:清华大学出版社,2011年:56-57 [6] php数组的定义、调用和修改 .idcpcw [引用日期2013-04-23] [7]  John Sharp.Visual C#从入门到精通.清华大学出版社,2016年:189