第二章 数组
第二章 数组
为巽一、数组的概念
数组是若干个相同类型的变量在内存中有序存储的集合。
概念理解:
数组用于存储一组数据
数组里面存储的数据类型必须是相同的
数组在内存中会开辟一块连续的空间
int a[10];//定义了一个整型的数组 a,a 是数组的名字,数组中有 10 个元素,每个元素的类型都是 int 类型,而且在内存中连续存储。
这十个元素分别是 a[0] a[1] …. a[9]
a[0]~a[9]在内存中连续的顺序存储
二、数组的分类
1)字符数组
即若干个字符变量的集合,数组中的每个元素都是字符型的变量
char s[10]; s[0],s[1]….s[9];
2)短整型的数组
short int a[10]; a[0] ,a[9]; a[0]=4;a[9]=8;
3)整型的数组
int a[10]; a[0] a[9]; a[0]=3;a[0]=6;
4) 长整型的数组
lont int a[5];
5)浮点型的数组(单、双)
float a[6]; a[4]=3.14f;
double a[8]; a[7]=3.115926;
6)指针数组
char *a[10]
int *a[10];
7)结构体数组
struct stu boy[10];
2.2 按维数分类
一维数组
int a[30];
类似于一排平房
二维数组
int a[2] [30] ;
可以看成一栋楼房 有多层,每层有多个房间,也类似于数学中的矩阵
二维数组可以看成由多个一维数组构成的。
有行,有列,
多维数组
int a[4] [2] [10];
三维数组是由多个相同的二维数组构成的
int a[5] [4] [ 2] [10];
三、数组的定义
3.1 一维数组的定义
格式:
数据类型 数组名[数组元素个数];
例如:
int a[10]; //定义了一个名为 a 的数组,数组中每一个元素都是 int 类型,一共有 10 个元素
//每一个元素都保存在一个变量中,每一个变量都是有数组名和数组下标组成的
//并且是从 0 开始的,分别是 a[0] a[1] a[2]… a[9]
注意:数组元素的个数在定义的时候也可以不写,但是如果不写,必须初始化(定义的时候赋值)
1 |
|
3.2 二维数组的定义
格式:
数据类型 数组名[行的个数][列的个数];
例如:
int a[2][4];
解释:
定义一个名为 a 的二维数组,每一个元素都是 int 类型
这个二维数组中包含两行四列的元素,一共有 8 个元素
二维数组也是连续开辟空间,访问元素是行和列都是从 0 开始,分别是 a[0] [0] a[0] [1] a[0] [2] a[0] [3] a[1] [0] a[1] [1] a[1] [2] a[1] [3]
注意:二维数组的下标也是可以省略的,但是有条件,在初始化时行数可以省略,但是列数不能省略
1 | //定义一个二维数组 |
四、定义并初始化
4.1 一维数组的初始化
1 |
|
4.2 二维数组的初始化
按行初始化:
a、全部初始化
1 | int a[2][2]={{1,2},{4,5}}; |
b、部分初始化
1 | int a[3][3]={{1,2},{1}}; |
逐个初始化:
全部初始化:
1 | int a [2][3]={2,5,4,2,3,4}; |
部分初始化:
1 | int a[2][3]={3,5,6,8}; |
1 |
|
五、数组元素的引用方法
一维数组元素的引用方法
数组名[下标];
//下标代表数组元素在数组中的位置,注意从 0 开始
int a[10];a[2];
二维数组元素的引用方法
数组名[行下标] [列下标];
int a[3] [4];
a[1] [2]
1 |
|
六、字符数组的定义和初始化问题
1 | char c1[] ={‘c’,’ ’,’p’,’r’,’o’,’g’}; |
字符数组的引用
1.用字符串方式赋值比用字符逐个赋值要多占 1
个字节,用于存放字符串结束标志‘
\0’;
2.上面的数组 c2 在内存中的实际存放情况为:
3.由于采用了’\0’标志,字符数组的输入输出将变得简单方便
1 |
|