-
1 文字讲解
-
2 视频讲解
-
3 拓展资料
§5.1.1 一维数组的定义
一、一维数组的定义方式:
类型说明符 数组名[ 常量表达式 ];
例如:
int a[10]; /* 数组名为a,有10个int型元素 */
double scores[50*2]; /* 数组名为scores,有100个double型元素 */
二、定义数组时需要注意以下儿个问题:
① 数组的命名规则和变量名相同。应遵循标识符命名规则。
②“常量表达式”表示数组元素的个数(即数组的长度),在定义数组时必须指定该值。
③ 引用元素时下标从0开始。
例如“inta[10];”,a数组的10个元素分别是a[0]、a[1]、a[2]、a[3]、a[4]、a[5]、a[6]、a[7]、a[8]、a[9]。由于C语言不对下标做越界检查,因此虽然不存在元素a[10],但程序中若使用a[10],编译器并不会提示语法错误,这就需要用户在编程时注意这个细节,否则容易导致意外发生。
④“常量表达式”中可以包括常量和符号常量,但不能包含变量,即语言不允许对数组的大小做动态定义,数组的大小不依赖于程序运行过程中变量的值。
例如,下面定义数组的方式是非法的。
int n;
scanf("%d", &n );
5 ⑤建义数组时。语言分配足够的内存来存放所有元素,并且这线元素在内存中是连续存
6 int a[n]
7 放的,数组名本身表示内存的首地址
8 (读者在学到指针一章时会对这一点有更深的体会)。例如
9 定文数组“Rat score[10o:”每个元是型,需要古用4个字节,因此需要分配100x4
10 个字节的内存
11 由图-1可以看出,数组的下标实际上相当于某个元素相
12 地址
13 元素
14 对于数组首地址的偏移量例如scorest[3]的偏移量为3个单位
15 scores+0
16 scores(0
17 (即3×4个字节)。了解这一点对数组的理解将会有很大的帮
18 soores+I
19 scores[1]
20 动。
21 scoees+2
22 ]
23 5.1.2一维数组元素的引用
24 s000s+99
25 secres(99]
26 数组定义之后即可使用语言规定只能逐个引用数组元
27 图1数元的地址我小
28 素,而不能一次引用整个数组
29 数组元素的表示形式为:
30 数组名[下标]:
31 这里的“下标”可以是整型常量或整型表达式,例如a[0]、a[2*3]、a[2+3]等。注意下标不要
32 越界。
33 由于数组是多个数据元素的集合,在程序中经常需要对数组的部分或所有元素一起进行处
34 理,因此一维数组经常和循环搭配使用。
35 例5-1输入10个学生的成绩,先计算它们的总分,再输出它们的平均分、
36 #include<stdio.h>
37 main)
38 int i;
39 float scores[10],sum=0;
40 printf("输入10个学生的成绩:");
41 for(i=0;i<10;i++)
42 scanf("%f",&scores[i]);
43 sum+=scores[i ]
44 printf("平均分=%.2f",sum/10);
45 }
46 运行结果如图5-2所示。


