数组的概念
“ 数组 ”我们可以理解成一组相同类型元素的集合
(1)其中可以是单个或是多个元素,可以是0,但元素个数不能为0
(2)一个数组中存放的元素必须是同类型的,比如一组整型,一组浮点数,一组字符等等,这不难理解吧,就相当于分类嘛
数组分为一维数组和多维数组,今天这一期咱们主要探讨的就是一维数组
一.一维数组的创建
一维数组的表现格式:type arr [ 常量值 ]
(1)type是数组的类型,如:int,float,char,short等,也可以自定义
(2)arr是数组的名字,可根据实际情况自定义(数组名是给我们程序员自己看的,所以我们给数组取名字要尽量贴合数组的运用意义,函数取名也是一样)
(3)[ ] 中的常量值是存放数组的大小,也就是数组的元素总个数
如图,我们在给数组取名的时候,要根据我们的实际情况,实际意义来取,以便于我们理解代码
二.数组的初始化
在我们创建数组的时候,有时我们需要给定一些初始值,并将这些数据放在大括号内,这就被称为数组的初始化。这跟我们之前讲到过的初始化差不多,只是数组的初始化可以是一个或多个
数组有三种初始化类型:
(1)完全初始化 (2)不完全初始化 (3)错误初始化
三.数组的类型
数组的类型跟我们上面提到的数组中元素的类型不是一个概念哦,诸君一定要将这两个概念分清,千万不要将两者混淆,这一区分概念,在我们后面在指针板块学习中对指针的理解至关重要
其实数组的类型算是一种自定义,我们将一个数组的数组名去掉,剩下的部分就被称做数组的类型
四.数组的下标
1.数组下标的概念
在我们C语言中,规定了数组是有下标的,且数组下标是从0开始的,如果我们一个数组内存放了n个元素,它就有n - 1个下标,也就是最后一个元素的下标为n - 1,下标可以理解为计算机式的IP地址,计算机通过这个下标就能找到并且访问读取这个下标所对应的元素(这一概念还望诸君一定药要重视理解,在我们后续学习指针的时候会做更深入的研究)
2.下标引用操作符 [ ]
上面提到我们可以通过下标访问读取到该元素,这个时候就有小伙伴要问了,那到底怎么去访问呢?你看,你又急。C语言中提供了一种操作符——下标引用操作符: [ ]
我们只需要将我们想找到的元素的下标填写进下标引用操作符中,就可以访问并读取该元素
五.数组的输入和输出
提到输入,诸君脑海里是不是应该第一时间冒出scanf函数,这是对的;那么提到输出,是不是想到printf函数,这就不完全对咯,我们一个数组可能储存了多个元素,我们单靠一个printf函数是不能完成对整个数组的输出的,因此,我们还需利用循环去遍历数组中的每个元素,一个一个访问读取再通过printf打印。在我们学过的众多循环中,诸君认为哪一个循环语句在这里的使用效果更佳呢?我认为是 for 循环
六.一维数组在内存中的储存
这里就是我们有关于地址的概念了,也就是C语言中的指针!!!这是C语言中的大Boss
数组元素在内存中的储存都有属于它的一个地址,在不同的编译环境中(x64和x86),我们的储存地址位数不同,且储存是十六进制,如图:
通过左后两位十六进制数我们可以看出,数组随着下标的增大,地址是由小到大在有规律的变化的,且每两个相邻元素之间相差4,这是为什么呢?因为我们的元素类型是 int 整型啊,每个元素都是整型,那一个整型占几个字节呢?可不就是4个嘛,而且由此观之,我们可以得出结论:数组在内存中是连续储存的
七. sizeof 关键字
C语言中有着这样一个关键字,它能够计算类型或者变量的大小(个数),也能用于计算数组的大小,那就是——sizeof
当我们想要计算出数组中的元素个数怎么办呢?哎,你看,你又急。我们有了数组的总大小,且在本次开篇就强调过,数组中所有元素都是同类型的,因此,我们只需要计算出数组中一个元素的大小(我们通常选择下标为0的元素),再用数组总大小除以一个元素的大小,不就得出了数组中的元素个数了嘛
OKK,一维数组的相关概念及其运用我们就讲到这里,有关二维数组的知识点我下期在给诸君总结。数组中有一个很重要的概念就是——地址,这个点与我们后续学习的“ 指针 ”息息相关,诸君一定要引起重视,理解清楚地址的概念,有什么疑问的地方欢迎跟我交流,好了就这样,咱们下期再见,与诸君共勉!!!