数组:
数组是一个由若干同类型变量组成的集合,引用这些变量可以使用同一个名字。数组均由连续的存储单元组成,最低地址对应与数组的第一个元素,最高地址对应于最后一个元素,数组可以是一维数组,也可以是多维数组。
一维数组:
一维数组适用于存储一维数列中数据的集合。
定义:
类型说明符 数组标识符[常量表达式];
类型说明符表示数组中的所有元素的类型。
数组标识符表示该数组型变量的名称,命名规则与变量名一致。
常量表达式定义了数组中存放的数据元素的个数,即数组长度。
注意:
数组名的命名规则和变量名相同,遵循标识符命名规则。
在定义数组时,需要指定数组中元素的个数,方括号中的常量表达式用来表示元素的个数,即数组长度。例如,student[10],表示数组 student[] 有 10 个元素。
下标是从 0 开始的,这 10 个元素分别是student[0]...student[9]。
常量表达式中可以包括常量和符号变量,如“int a[4*2]”是合法的。
引用:
表示形式如下:
数组标识符[下标]
例如,引用数组变量a中的第3个元素:a[2];
a是数组变量的名称,2为数组的下标。数组下标从0开始。
习题:创建一个数组,保存用户手机号。代码如下:
一维数组初始化:
C语言中的数组初始化是有三种形式的。
1、 数据类型 数组名称[长度n] = {元素1,元素2…元素n};
2、 数据类型 数组名称[] = {元素1,元素2…元素n};
3、 数据类型 数组名称[长度n]; 数组名称[0] = 元素1; 数组名称[1] = 元素2; 数组名称[n-1] = 元素n;
注意:
1、数组的下标均以0开始;
2、数组在初始化的时候,数组内元素的个数不能大于声明的数组长度;
3、如果采用第一种初始化方式,元素个数小于数组的长度时,多余的数组元素初始化为0;
4、在声明数组后没有进行初始化的时候,静态(static)和外部(extern)类型的数组元素初始化元素为0,自动(auto)类型的数组的元素初始化值不确定。
数组的遍历:
在程序中,数组就可以采用循环的方式将每个元素遍历出来,而不用人为的每次获取指定某个位置上的元素,例如我们用for循环遍历一个数组:
数组遍历时要注意以下几点:
1、最好避免出现数组越界访问,循环变量最好不要超出数组的长度,比如:
2、C语言的数组长度一经声明,长度就是固定,无法改变,并且C语言并不提供计算数组长度的方法。
3、由于C语言是没有检查数组长度改变或者数组越界的这个机制,可能会在编辑器中编译并通过,但是结果就不能肯定了,因此还是不要越界或者改变数组的长度。
习题:某记分员记录了球员在10场篮球比赛中的成绩,输入数据后,求平均成绩。代码如下:
二维数组:
二维数组的根本意义就是一维数组的数组,二维数组的第一位就是数据的起始地址,第二位就是某个数据中的某个值。
二维数组的定义:
二维数组的定义与一维数组相同,形式如下:
类型说明符 数组名[常量表达式][常量表达式]
其中,“常量表达式1”被称为行下标,“常量表达式2”被称为列下标。如果有二维数组array[n][m],则二维数组的下标取值范围如下:
行下标的取值范围0-n-1。
列下标的取值范围0-m-1。
二维数组的最大下标元素是array[n-1][m-1]。
引用:
二维数组的引用形式如下:
数组名[下标][下标];
二维数组的下标可以是整型常量或整形表达式。
注意:不管是行下标还是列下标,其索引都是从0开始的。
二维数组的初始化:
分行给二维数组赋初值。例如:
int a[3][4] = {{1,2,3,4},{5,6,7,8},{9,10,11,12}};
把第一个花括号的值给第 0 行元素,第 2 个花括号的值给第一行元素....
可以将所有的数据放在一个花括号内,例如:
int a[3][4] = {1,2,3,4,5,6,7,8,9,10,11,12};
可以对部分元素赋初值。例如:
int a[3][4]={{1},{3},{5}};
它的作用是只给各行第 0 列的元素赋初值,其他元素默认为 0。赋初值后的结果为:
1 0 0 0
3 0 0 0
5 0 0 0
在给二维数组赋初值时,有下列4中情况:
1、可以将所有数据写在一个大括号内,按照数组元素排列顺序对元素赋值。例如:
int array[2][2]={1,2,3,4};
如果大括号内的数据少于数组元素的个数,则系统默认将后面未被赋值的元素设置为0。
2、在为所有元素赋初值时,可以省略行下标,但是不能省略列下标。例如
int array[][3]={1,2,3,4,5,6};
系统会根据数据的个数进行分配,一共有6个数据,而数组每行分为3列,当然可以确定数组为2行。
3、也可以分行给数组元素赋值。例如:
int array[2][3]={{1,2,3},{4,5,6}};
在分行赋值时,可以只对部分元素赋值,例如:
int array[2][3]={{1,2},{4,5}};
如果只给一部分元素赋初值,则未赋值的部分元素值为0.
4、二维数组也可以直接对数组元素赋值。例如:
int a[2][3];
a[0][0]=1;
a[0][1]=2;
习题:利用二维数组输出坐标。代码如下: