数组
(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