上次作业 、P14144.17 #define low(x)(x)+32 2、P1414.18 #define swap(x, y) int t; t=x; x=y;y=t; 3 本次课内容:一维数组 教学目的:掌握一维数组的定义、初始化,数组的引用、数组作 为函数参数及数据排序、査找等处理方法。 重点:一维数组的定义、初始化及数组的引用。 难点:利用数组的数据处理(排序、査找等问题处理),地址传 递
上次作业: 1、P1414_4.17 #define low(x) (x)+32 2、P141_4.18 #define swap(x,y) {int t ;t=x;x=y;y=t;} 本次课内容:一维数组 教学目的:掌握一维数组的定义、初始化,数组的引用、数组作 为函数参数及数据排序、查找等处理方法。 重点:一维数组的定义、初始化及数组的引用。 难点:利用数组的数据处理(排序、查找等问题处理),地址传 递
维数组的定义 般形式:类型标识符数组名[元素个数; 如:inta5; 说明:(1)元素序号从0起始。 (2)元素个数也称数组长度。 (3)定义了n个连续的存储单元(每个单元字节数由数据类型 决定)。 (4)数组名是第一个单元的地址。 元素地址 内存空间元素占字节 0}1010 2字节 101 a{1}1012 1013 2字节 813 2字节 a{3}1016 1017 2字节 {4}1018 字节 1019
一、一维数组的定义 一般形式: 类型标识符 数组名 [ 元素个数 ]; 如:int a[5]; 说明: (1)元素序号从0起始。 (2)元素个数也称数组长度。 (3)定义了n个连续的存储单元(每个单元字节数由数据类型 决定)。 (4)数组名是第一个单元的地址。 2字节 2字节 2字节 2字节 2字节 a{0} a{1} a{2} a{3} a{4} 内存空间 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 元素 地址 元素占字节 a
在数组定义时指定元素的初始值,称初始化。 s: static int a[5]=(1, 2, 3, 4, 5); static char ch2|={a,”b”} 说明:(1)元素定义的初值个数不足时,用零补齐。 tn static int a[ 5]=1, 2, 3; 等价于: static a5 1,2,3,0,0}; ints8]={0}; s|0~S7中的值均为零。 (2)元素定义时赋初值,可以不指定数组个数; tn static int a[ 1= 1, 2, 3, 4, 5 ] 此时将以初值个数决定数组长度 像为(静态和外部存储类型的数组不进行初始化,隐含的初 j零或空字符,自动类型数组未初始化,其值不确定。 static char chl5;/ch1|0J~ch14中的值为空,即 6,k static int m5l;/m0~m4中的值为零 float p5;/“p|0~p4中的值不确定*
二、一维数组的初始化 在数组定义时指定元素的初始值,称初始化。 如: static int a[5]={1,2,3,4,5}; static char ch[2]={‘a’,’b’}; 说明: (1) 元素定义的初值个数不足时,用零补齐。 如 static int a[ 5]={1,2,3}; 等价于: static a[5]={1,2,3,0,0}; int s[8]={0}; s[0] ~ s[7]中的值均为零。 (2)元素定义时赋初值,可以不指定数组个数; 如 static int a[ ]={1,2,3,4,5]; 此时将以初值个数决定数组长度。 (3)静态和外部存储类型的数组不进行初始化,隐含的初 值为零或空字符,自动类型数组未初始化,其值不确定。 static char ch1[5]; /*ch1[0]~ch1[4]中的值为空,即 ‘’*/ static int m[5]; /*m[0]~m[4]中的值为零*/ float p[5]; /*p[0]~ p[4]中的值不确定*/
、数组元素的引用 数组定义后即可以引用。 如:a[1l3;a2|=a[1]+1 注:C编译不检查下标“出界”,若引用出界下标,将引用数组 以外的(下面存储单元内容)数据引用,造成错误。 数组元素引用,一般采用循环结构。 如:for(i=1;i<5;i++)a[i]=i; 四、数组作为函数参数 数组数据传送到函数的两种方法: 1、数组元素作为参数(值传递) 如: are=fun (a[0k a[1l, a 2 float fun(float a, float b, float c)
三、数组元素的引用 数组定义后即可以引用。 如: a[1]=3 ; a[2]=a[1]+1; 注:C编译不检查下标“出界”,若引用出界下标,将引用数组 以外的(下面存储单元内容)数据引用,造成错误。 数组元素引用,一般采用循环结构。 如:for ( i=1 ; i<5 ; i++ ) a [ i ] = i ; 四、数组作为函数参数 数组数据传送到函数的两种方法: 1、数组元素作为参数(值传递) 如: : are=fun(a[0],a[1],a[2]); : float fun(float a,float b,float c) { : }
2、数组名作为函数参数(地址传递) int fun(int x3D inta|3={12,34,54,}; int ave, ave=fun(a) 1210 12 1212 int fun(int xsD) 34 X 214 0I2 int sum; aol X sum=x[0+x1+x2] return(sum); 特点:实参和形参共占同一段内存单元,形参变化,实参 也随之变化。 例:P145交换
2、数组名作为函数参数(地址传递) : int fun(int x[3]); int a[3]={12,34,54,}; int ave; ave=fun(a); : } int fun(int x[3]) { int sum; sum=x[0]+x[1]+x[2]; return (sum); } 特点:实参和形参共占同一段内存单元,形参变化,实参 也随之变化。 例:P145_交换 12 34 54 a[0] a[1] a[0] x[0] x[1] x[2] 1212 1214 1210