第六章:数组01
让编程改变世界
Change the world by program
数组的概念
有如下几组数据,它们分别该如何存储呢?学生的学习成绩 银行的账单 一行文字
这些个数据的特点是:1、具有相同的数据类型 2、使用过程中需要保留原始数据
C语言为这些数据,提供了一种构造数据类型:数组。我们来看一下书本的定义:
在程序设计中,为了处理方便,把具有相同类型的若干变量按有序的形式组织起来。
这些按序排列的同类数据元素的集合称为数组。在C语言中,数组属于构造数据类型。
一个数组可以分解为多个数组元素,这些数组元素可以是基本数据类型或是构造类型。
因此按数组元素的类型不同,数组又可分为数值数组、字符数组、指针数组、结构数组等各种类别。
数组:具有相同类型的数据组成的序列,是有序集合。
[caption id="attachment_92" align="aligncenter" width="309"] 数组[/caption] 数组元素由其所在的位置序号(称数组元素的下标)来区分。 用数组名与下标可以用统一的方式来处理数组中的所有元素,从而方便的实现处理一批具有相同性质数据的问题。 注意:数组元素有序不是指元素大小顺序一维数组的定义和引用
一维数组的定义方式: 在C语言中使用数组必须先进行定义。 一维数组的定义方式为:类型说明符 数组名 [常量表达式]; 例如:int a[10]; 它表示定义了一个整形数组,数组名为a,此数组有10个元素,10个元素都是整型变量!需要注意的是:
一、类型说明符是任一种基本数据类型或构造数据类型。对于同一个数组,其所有元素的数据类型都是相同的。 二、数组名是用户定义的数组标识符。书写规则应符合标识符的书写规定。 三、方括号中的常量表达式表示数据元素的个数,也称为数组的长度。 四、允许在同一个类型说明中,说明多个数组和多个变量。 例如:int a,b,c,d,k1[10],k2[20]; 五、a[10],表示a数组有10个元素,注意下标是从0开始的,这10个元素是,a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8],a[9]。请持别注意,按上面的定义,不存在数组元素a[10]。 六、C语言不允许对数组的大小作动态定义,即数组的大小不依赖于程序运行过程中变量的值。 例如,下面这样定义数组是不行的:int n;
scanf(“%d″,&n); /*在程序中临时输入数组的大小 */
int a[n];
一些常见的错误:① float a[0]; /* 数组大小为0没有意义 */
② int b(2)(3); /* 不能使用圆括号 */
③ int k, a[k]; /* 不能用变量说明数组大小*/
以下是正确的演示:int a[10]; //说明整型数组a,有10个元素。
float b[10],c[20]; //说明实型数组b,有10个元素,实型数组c有20个元素。
char ch[20]; //说明字符数组ch,有20个元素。
重点补充:一维数组在内存中的存放形式
一维数组: int mark[100]; [caption id="attachment_93" align="aligncenter" width="150"] 一维数组在内存中的存放方式[/caption]一维数组元素的引用
数组元素是组成数组的基本单元。数组元素也是一种变量,其标识方法为数组名后跟一个下标。下标表示了元素在数组中的顺序号。 数组元素的一般形式为:数组名[下标] 例如:a[0]= a[5] + a[7] - a[2*3]
a[i+j]
a[i++]
都是合法的数组元素。一些个注意的事项:
数组元素通常也称为下标变量。必须先定义数组,才能使用下标变量。在C语言中只能逐个地使用下标变量,而不能一次引用整个数组。 例如输出有10个元素的数组必须使用循环语句逐个输出各下标变量: [codesyntax lang="c"]for(i=0; i<10; i++) { printf("%d",a[i]); }[/codesyntax] 而不能用一个语句输出整个数组。 下面的写法是错误的:printf("%d", a); 定义数组时用到的“数组名[常量表达式]” 和引用数组元素时用到的“数组名[下标]” 是有区别的。 例如:
int a[10]; /* 定义数组长度为10 */
t = a[6]; /* 引用a数组中序号为6的元素。此时6不代表数组长度 */
[buy] 获得所有教学视频、课件、源代码等资源打包 [/buy] [Downlink href='http://kuai.xunlei.com/d/LISTMENIMNXP']视频下载[/Downlink]