清华大学出版社 TSINGHUA UNIVERSITY PRESS ●主要内容 7.1一維数组定义、引用、初始化和举例 7.2二维数组定义、引用、初始亿和举例 7.3字符数组定义、引用、初始化和举例 关键:数组的相关算法
⚫ 主要内容 7.1 一维数组定义、引用、初始化和举例 7.2 二维数组定义、引用、初始化和举例 7.3 字符数组定义、引用、初始化和举例 关键:数组的相关算法
清华大学出版社 TSINGHUA UNIVERSITY PRESS §7.1.1一维数组的定义 类型说明符数组名[常量表达式]; 例如:inta10; float b8],c[9 1)数组元素按顺序存储在一片连续的内存单元中,数 组名代表存储区域起始地址,即第一个“元素”地址 2)常量表达式不能包含变量,长度必须大于0 如intn; scant(w%d",&n);inta[n];不可,但可用 符号常量,如# define n10; int a n|;
类型说明符 数组名[常量表达式]; 例如: int a[10]; float b[8],c[9]; § 7.1.1一维数组的定义 1)数组元素按顺序存储在一片连续的内存单元中,数 组名代表存储区域起始地址,即第一个“元素”地址 2)常量表达式不能包含变量,长度必须大于0。 如 int n; scanf(“%d”,&n); int a[n]; 不可,但可用 符号常量,如#define N 10; int a[N];
清华大学出版社 TSINGHUA UNIVERSITY PRESS §7.1.2一维数组元素的引用 数组名[下标] 如:inta[3];a[1]=80; printf(w%d〃,a[1]) double b[3]; scanf(%1fm,&b[1]) 1)a[i]相当于一个变量,可赋值或输入,而数组名是地址 常量,不能被赋值 2)数组元素的下标从零开始,到N-1结束。如对inta[3] ,数组元素为a[0],a[1],a[2];而a[3]越界 3)C编译系统对数组不作下标越界检查,但越界操作会破 坏数组存储区域外的程序或数据,易造成程序出错,甚 至系统崩溃。如 scanf(“%d”,&a[3]);
数组名[下标] 如:int a[3];a[1]=80;printf(“%d”,a[1]); double b[3];scanf(“%lf”,&b[1]); § 7.1.2一维数组元素的引用 1)a[i]相当于一个变量,可赋值或输入,而数组名是地址 常量,不能被赋值 2)数组元素的下标从零开始,到N-1结束。如对int a[3] ,数组元素为a[0],a[1],a[2];而a[3]越界 3)C编译系统对数组不作下标越界检查,但越界操作会破 坏数组存储区域外的程序或数据,易造成程序出错,甚 至系统崩溃。如scanf(“%d”,&a[3]);
清华大学出版社 UNIVE 例7.1定义10元素的整型数组,元素0-9,之后逆序输出 #include stdio. h> 注意访问数组元素时 VO id main 循环变量开始和结束条 件的表示 int i, a [10] 定义之后,不能通过数 for(i=0;i<10;i++) 组名对数组进行整体输入 a li] 输出或赋值,如: int a[31 for(i=9;i>=0;i-) a={1,2,3} printf("%d", a [i]); printf ( %d%d%d?, a printf(n")
例7.1 定义10元素的整型数组,元素0-9,之后逆序输出 #include <stdio.h> void main() { int i,a[10]; for (i=0;i<10;i++) a[i]=i; for(i=9;i>=0; i--) printf("%d ″ ,a[i]); printf("\n″); } 定义之后,不能通过数 组名对数组进行整体输入、 输出或赋值,如: int a[3]; a={1,2,3}; printf(“%d%d%d”,a); 注意访问数组元素时 循环变量开始和结束条 件的表示
7.1.3-维数组的初始化 初始化:定义数组的同时为数组元素赋值。方式: 1)全部元素赋初值 如inta[3]={8,5,9;则a[0]=8,a[1]=5,a[2]=9; 2)部分元素赋初值,其余元素自动初始化为0 如inta[3]={8,2};则a[0]=8,a[1]=2,a[2]=0 3)全部元素赋初值时,数组长度可以省略 如inta[]={8,5,9}等同于inta[3]={8,5,9} 注1:部分赋值时只能从首元素开始若干连续元素,如 inta[5]={,2,3};intb[5]={1,,3};错 注2:定义与赋值分开时,只能逐个元素赋值
§ 7.1.3一维数组的初始化 初始化:定义数组的同时为数组元素赋值。方式: 1)全部元素赋初值 如int a[3]={8,5,9};则a[0]=8,a[1]=5,a[2]=9; 2)部分元素赋初值,其余元素自动初始化为0 如int a[3]={8,2};则a[0]=8,a[1]=2,a[2]=0; 3)全部元素赋初值时,数组长度可以省略 如int a[]={8,5,9}等同于int a[3]={8,5,9} 注1:部分赋值时只能从首元素开始若干连续元素,如 int a[5]={,2,3};int b[5]={1, ,3};错 注2:定义与赋值分开时,只能逐个元素赋值