文档介绍:第6章数组
北京科技大学信息基础科学系
C 语言程序设计
1
第6章数组
本章重点介绍:
一维数组
二维数组
字符数组与字符串
2017/11/11
2
第6章数组
一个人N门课的成绩怎样存储和处理?
一个班N门课的成绩怎样存储和处理?......
这些数据的特点:具有相同的数据类型。
为了方便地使用这些数据,C语言提供了一种构造数据类型:数组。
例如:存储学生成绩用实型数组 score[5]
其中:score是数组名。该数组可以存放5个成绩,分别用下标变量表示:score[0],score[1],…score[4]。
下标变量也称为数组元素。
2017/11/11
3
一维数组
例如: int a[10];
float score[5];
“数据类型”: 是数组元素的数据类型。
“数组名”: 遵循C语言标识符规则。
“常量表达式”:表示数组中有多少个元素,即数组的长度。它可以是整型常量、整型常量表达式或符号常量。
一维数组的定义
数据类型数组名[常量表达式];
2017/11/11
4
以下数组定义是正确的:
#define N 10
……
float score1[N], score2[N];
int num[10+N];
char c[26];
以下数组定义是不正确的:
int array(10);
int n; float score[n];
double b['a'.. 'd'];
char str[ ];
一维数组的定义(续)
2017/11/11
5
数组在内存的存放
数组下标从0开始。
一维数组的数组元素在内存里按顺序存放。
数组名代表数组的首地址,即score的值与score[0] 的地址值(&score[0] )相同。
score[0]
score[1]
score[2]
score[3]
score[4]
低地址
高地址
score数组
2017/11/11
6
数组元素的引用
格式:
例如:输入学生成绩
for(i=0;i<5;i++)
scanf("%f",&score[i]);
例如:fib[n]=fib[n-1]+fib[n-2];
下标表达式的值必须是整型表达式。
数组名[下标表达式]
2017/11/11
7
数组元素的引用(续)
说明:
①下标从0开始(下界为0),数组的最大下标(上界)是数组长度减1。
例如:
int a[10];
scanf ("%d",&a[10]); /* 下标越界*/
C编译系统不做越界检查,如果引用的数组元素
超出数组范围会破坏其他变量的值。
2017/11/11
8
数组元素的引用(续)
②[ ]是下标运算符,引用数组元素时,根据数组的首地址和下标数,计算出该元素的实际地址,取出该地址的内容进行操作。
如引用 score[2]:
(1)计算 2000+2*4=2008
(2)取出2008的内容
2000H
2004H
2008H
200CH
2010H
score[0]
score[1]
score[2]
score[3]
score[4]
2017/11/11
9
一维数组的初始化
初始化:在定义数组时给数组元素赋初值。
,对全部数组元素赋初值
例如:int a[5]={0,1,2,3,4};
此时可以省略数组长度,例如:int a[ ]={0,1,2,3,4};
,对部分数组元素赋初值
例如:int a[5]={1,2,3};系统为其余元素赋 0 。
,编译出错
例如: int a[5]={0,1,2,3,4,5};
2017/11/11
10