目录
前言
存储一个数据的时候我们可以使用变量, 比如这里我们定义一个记录语文考试分数的变量**chinese_score
**,并给它赋值一个浮点数(float)。
cs
float chinese_scoer=98.0;
printf("语文考试分数是%f\n",chinese_scoer);
假如我们需要记录多个类似的数据,比如这里记录语文数学英语物理化学生物这6科考试的分数,我们就需要6个变量,这样的话就有点麻烦。
假设我们要记录100个数据呢?全用变量的话一来变量名很多,二来代码也会很冗长,这时候我们就需要一些新的机制。
cs
float chinese_score = 98.0;
float math_score = 96.0;
float english_score = 90.0;
float physics_score = 88.0;
float chemistry_score = 87.0;
float organism_score = 81.0;
这里我们就要介绍一个新的存储方式------数组,
它可以一次性存储多个相同类型的数据。
如果变量就像一个盒子的话,一次可以存储一个数据;
那么数组就像一个抽屉,可以存储多个数据。
1.创建一维数组
1.1
我们创建一个有六个元素的浮点型数组用来存储成绩:
cs
float exam_score[6]={98.0,96.0,90.0,88.0,87.0,81.0};
1. 数组的数据类型,float浮点型
2. 数组名,exam_score
3. 数组的长度是6,也就是能容纳6个数据
4. 方括号,里面写的是数组的长度
cs
float exam_score[6]={98.0,96.0,90.0,88.0,87.0,81.0};
5.赋值符号 =
6.数组的六个元素,都是浮点型
7.数组的元素,需要用花括号括起来
8.数组中的元素用逗号,隔开
1.2
上面我们完成了数组的初始化工作,创建了一个浮点数的数组,它里面存储了六个值。我们把这些值叫做数组的元素。
数组的命名规则和变量是一致的,由大小写字母,数字和下划线组成,不能由数字开头。
同时,我们不仅能创建浮点数的数组,之前学过的所有数据类型的数组都可以创建,只不过需要注意的是,完成创建以后,所有数组的元素都是这个类型的。
例如:
cs
int student_age[3]={18,19,21};
1.我们创建一个有三个元素的整型数组student_age,并进行赋值:
2.然后输入数组名字student_age:
3.填入数组的长度[3],注意使用英文的方括号[]:
cs
int student_age[3]={18,19,21};
4.填入赋值符号= :
5.填入数组元素的花括号{}:
6.填入分隔数组元素的逗号, :
1.3
完成了数组的创建/定义之后,我们就可以使用里面的数据元素了,这里的使用包括了读取和修改。
创建一维数组就像是做好了一个抽屉,并在抽屉中放好了东西(数据);
使用一维数组就是在这个抽屉中取出东西(数据),或者在抽屉的每个格子里面放入不同的东西(数据)。
2.使用一维数组
2.1
数组中的元素存储是有序的,
有序的意思就是数组元素是按照顺序一个一个排好的。
他们都有固定的位置,方便查找和修改。
下列代码就会输出1,2,3,因为我们依次打印了这个数组的第一个元素,第二个元素,第三个元素:
cs
int int_list[3]={1,2,3};
printf("%d\n",int_list[0]);
printf("%d\n",int_list[1]);
printf("%d\n",int_list[2]);
1.创建了一个有三个元素的整型数组
2.打印数组里面的第一个元素 printf("%d\n", int_list[0])
3 数组里面的第一个元素 int_list[0]
cs
int int_list[3]={1,2,3};
printf("%d\n",int_list[0]);
printf("%d\n",int_list[1]);
printf("%d\n",int_list[2]);
4.数组元素的位置,也是用方括号+数字表示 [0]
5.打印数组里面的第二个元素 printf("%d\n", int_list[1]);
6.打印数组里面的第三个元素 printf("%d\n", int_list[2]);
2.2
这种有序的数据结构又叫做线性表,也就是说每个元素都像一根线一样一一排列的。我们可以通过索引/下标的方式来访问数组中的元素。
2.3
我们来看看数组里面的下标,也就是方括号里面的数字
cs
int int_list[3]=[1,2,3];
printf("%d\n",int_list[0]);
printf("%d\n",int_list[1]);
printf("%d\n",int_list[2]);
-
方括号里面是3,表明这个数组的长度是3
-
打印第一个元素,下标是0
-
打印第二个元素,下标是1
-
打印第三个元素,下标是2
2.4
我们可以注意到,在使用数组的时候,我们下标是从0开始的,比如第一个元素是int_list[0]
。
这是由一个C语言内在的机制决定的,因为第一个元素是在线性表的头部,所以它的位置和线性表的开头位置是重合的;
因此我们增加0的位置就能访问这个元素了,因为第一个元素就在开头。
而访问第二个元素的时候,我们需要越过第一个元素,这时候需要+1,因此第二个元素的下标是1。
2.5
比较有意思的是,从C语言开始,后面所有的编程语言在类似数组这样线性表的结构里面,都使用0来表示第一个元素。
所以久而久之这也成了程序员的一个梗,第一个数不是1,是0
例如:
cs
char char_list[5]={'p','a','p','e','r'};
printf("%c\n",char_list[0]);
printf("%c\n",char_list[1]);
printf("%c\n",char_list[2]);
printf("%c\n",char_list[3]);
printf("%c\n",char_list[4});
输出结果
cs
papper
1.我们定义一个字符数组并赋值,然后打印输出它,填入第一个下标0:
2.填入第二个下标和方括号[1],需要注意的是,由于没有换行符/n,所以这五个字符字母是在同一排输出的:
2.6
除了访问数组的元素以外,我们还可以修改数组的元素,因为数组的元素也和变量一样,可以重新赋值和修改。
创建一个数组并初始化赋值1,0,2,4,然后修改这个数组的元素,赋值1,1,1,1:
cs
int int_list[4]={1,0,2,4};
int int_list[1]={1};
int int_list[2]={1};
int int_list[3]={1};
1.定义一个整型数组,赋值1,0,2,4
2.给第二个数组元素赋值1,因为第一个数组元素就是1,无需修改
3.给第三个数组元素赋值1
4.给第四个数组元素赋值1
2.7
既然是个线性结构,我们就不能超出这个这个线性表的长度,比如一个数组长度是'3'
,我们可使用的范围就是0到2
。
超出这个范围就属于"越界",程序会报错。
3.易错点
如图
方括号[]中常量表达式表示数组元素的个数;
数组元素的索引是从0开始的;
数组大小必须是大于0的正整数。
4.思维导图
在撰写这篇文章时,我参考了《白纸编程》这个app的观点和思想,我要感谢他们对我的启发和帮助。