文档介绍:教学目标:
本讲介绍C语言中数组的定义和使用,其中重点介绍一维数组的定义、引用、初始化,此外对二维数组的定义、引用和初始化在文中也作了详细的说明。要求大家熟练掌握一维数组的使用,了解的二维数组的应用,灵活运用数组编程。
本讲重点:
、初始化及应用;
:下标法、数组名法。
。
本讲难点:
;
。
教学方法:理论教学与实践教学相结合。
一维数组及指针
一维字符数组及指针
多维数组及指针
指针数组
二级指针
程序设计举例
第五章数组
一维数组及指针
数组属于构造类型,数组是具有相同数据类型的变量的序列,序列中的每个变量称为数组元素,数组元素用一个统一的标识符“数组名”和其顺序号“下标”来表示。数组可以是一维的,也可以是多维的。数组必须先定义后使用。
. 一维数组的定义和初始化
 
 
一维数组定义的一般形式为:
类型标识符数组名[常量表达式]
其中,类型标识符表示数组的数据类型,即数组元素的数据类型,可以是任意数据类型,如整型、实型、字符型等。常量表达式可以是任意类型,一般为算术表达式,其值表示数组元素的个数,即数组长度。数组名要遵循标识符的取名规则。
如:int a[10];
定义了一个一维数组,数组名为a,数据类型为整型,数组中有10个元素,分别是:a[0],a[1],a[2],a[3],a[4], a[5],a[6],a[7],a[8],a[9]。
说明:
①不允许对数组的大小作动态定义。如下面对数组的定义是错误的。 int n=10;
int a[n];
②数组元素的下标从0开始。如数组a中的数组元素是从a[0]到a[9]。
③ C语言对数组元素的下标不作越界检查。如:数组a中虽然不存在数组元素a[10],但在程序中使用并不作错误处理,所以在使用数组元素时要特别小心。
④数组在内存分配到的存储空间是连续的,数组元素按其下标递增的顺序依次占用相应字节的内存单元。数组所占字节数为:sizeof(类型标识符)*数组长度。如数组a占用连续20个字节存储空间,。
⑤在函数内或函数外可以同时定义多个数组,还可以同时定义数组和变量,如:
float a[10],b[20],c,d,*p;
但在函数的参数中一次只能定义一个数组。
  在定义数组的同时,可以对数组的全部元素或部分元素赋初值,称为数组的初始化。
①全部元素初始化。
在对全部数组元素初始化时,可以不指定数组长度。
如:下面对数组a的初始化是等价的:
int a[10]={0,1,2,3,4,5,6,7,8,9};
int a[ ]={0,1,2,3,4,5,6,7,8,9};
a[0]到a[9]的值分别为:0,1,2,3,4,5,6,7,8,9。
Turbo C中,若数组的存储类型为static,且没有初始化,编译系统自动对数组初始化,将数值型数组的全部元素都初始化为0,将字符型数组的全部元素都初始化为空(’\0’)。如:
static int a[10];/*数组元素a[0]到a[9]的值都为0。*/
②部分元素初始化。
部分元素初始化时,数组的长度不能省略,并且是赋值给前面的元素,没有被赋值的数组元素,数值型数组时值为0,字符型数组时值为’\0’。如:
int a[10]={1,2};/*a[0]的值为1,a[1]的值为2,a[2]到a[9]的值都为0*/
一维数组元素的下标法引用
 一维数组元素的下标表示形式为:
数组名[表达式]
其中,表达式的类型任意,一般为算术表达式,其值为数组元素的下标。
用下标法引用数组元素时,数组元素的使用与同类型的普通变量相同。
若有定义:int a[10]={1,2,3,4,5,6,7,8,9,10},i=3;则下列对数组元素的引用都是正确的:
a[i] /*表示a[3] */
a[++i] /*表示a[4] */
a[3*2] /*下标6的数组元素*/
a[] /*下标为实型数据,系统自动取整,表示a[3]*/
a[’b’-’a’] /*下标为表达式,表达式’b’-’a’的值为1,表示 a[1]*/
a[4]+=10 /*与a[4]= a[4]+10等价,表示将a[4]的原值加10*/
a[4]++ /*与a[4]= a[4]+1等价,表示将a[4]的原值加1*/
【】将整型数组a中的十个整型数逆序存放并输出。
main()
{ int a[10],i,j,t;
for(i=0;i<10;i++