一维数组
一 、课前知识提前学习
具有相同类型的不同变量按有序的形式组织,用相同的名字表示,这些同类数据的集合称为数组。
例如:应用程序需要处理10名同学的C语言成绩,使用数组的形式表示这10个变量,可以定义为:float grade[10];
表示在内存中分配连续的10个存储单元(float型,10*4=40字节),与这10个存储单元关联的名字为grade,数组中所有单元的数据类型都相同(float),每个存储单元可以存放一个float数据。
数组定义形式相当于同时定义了10个float型的变量,它们分别是grade[0], grade[1], grade[2] , …….和grade[9],在数组中它们又被称为数组的元素。
数组元素的下标始终从0开始(与第一个单元的偏移为0),长度为n的数组元素的下标为0至n-1。对于数组,必须给出下标明确指出要访问的是10个存储单元中的哪一个(数组元素)。例如:grade[0]的下标为0,代表数组grade中第一个单元,grade[1]的下标为1,代表数组grade中第二个单元,以此类推。下标是数组名后面以一对方括号[]围绕的整数值,它指定了数据在数组中的位置。
数组可以方便的处理多个相同类型的变量,特别是变量间存在一定关联时(如数列,矩阵等),数组可以简化程序的处理过程,提高程序的执行效率,增强代码的可读性。例如使用一个循环输出这10个元素的值:
for(i=0;i<10;i++)
printf("%d",grade[i]);
循环执行10次,依次打印出grade[0], grade[1], ……和grade[9]的值。
访问数组中具体元素所需的下标数量称为维数,数组定义指明了数组的维数。只有一对方括号的数组是一维数组,带有两对方括号的是二维数组,以此类推。
按数组元素的类型不同,数组可分为数值数组、字符数组、指针数组、结构数组等,C语言要求所有数组必须先声明后使用。
一维数组的存储
定义一个n个元素的数组,系统会为该数组申请n个连续的内存单元,用来存放n个数组元素,内存单元的大小取决于数组的类型。 例如:
int a[5];
假设int型变量需要4个字节的内存(vc++环境),系统会为数组a申请4*5个字节的连续内存单元,如图1所示。