目录
一、一维数组
二、二维数组
三、Q & A
//该篇文章使用的部分素材和内容来自比特就业课
一、一维数组
1. 数组的概念
数组是一组相同类型元素的集合,从这句话中可以提出两点:
1. 数组中存放1个或多个数据,但是数组元素个数不为0。
2. 数组中存放多个数据,但它们的类型都相同。
数组分为一维和多维数组,多维中较为常见的是二维数组。
2. 一维数组的创建与初始化
其基本语法如上所示,其中:
type: 表示该数组所存放的数据类型
arr_name:表示数组名
[]:其中的常量值决定数组的大小(容量)
{}:用于表示数组中的内容
例如:创建一个名为student的数组,来储存学号为1~10的学生。
在本图中:
int :表示该数组内所存的内容为整型。
student:表示的是该数组的数组名。
[10 ]:表示该数组能存放10个元素
{1,2,3,4,5,6,7,8,9,10 }:表示该数组内的元素分别为1,2,3,4,5,6,7,8,9,10。共10个元素(即数组所存的内容)。
设置数组内数据类型并创立数组名的过程称为数组的创建,通过往数组的大括号内输入一些初始值的过程称为数组的初始化。
❗️注意:数组在进行初始化时也可分别省略[]和{}中的内容,如:
此时,当数组内的元素有多少,其大小(容量)就为多少,本图中[]内省略的数字为3
当省略{}内的内容时,数组会根据其自身的大小(容积)来用0填补空缺,因此对于数组arr来说,其元素为3个0;对于数组arr2来说,其元素为1、0、0。
3. 一维数组的使用
(1)数组下标
C语言规定数组中存在下标,即每个元素的编号。在数组中,第一个元素的下标为0;第n个元素的下标为n-1。
通过运用[]下标引用操作符,我们就可以使用下标来访问不同的元素了,如下图所示:
(2)数组元素的打印
当我们想要打印数组中的所有内容时,我们可以通过循环结构来实现,如下图所示:
(4)数组的输入
当然,我们也同样可以利用循环结构实现对数组内容的输入。
4. 一维数组在内存中的存储
我们可以通过打印数组中各元素的地址来观察数组在内存中的存储
通过对数组中各元素地址的观察,可以发现数组随着下标的增长,地址也由小到大增长,并且我们发现每两个相邻元素之间的地址相差4(因为一个整型是4个字节)。所以我们得知:数组在内存中是连续存放的。
❗️注意:上图中的地址使用的表现形式为16进制
10进制:0、1、2、3、4、5、6、7、8、9
16进制:0、1、2、3、4、5、6、7、8、9、a/A(10)、b/B(11)、c/C(12)、d/D(13)、e/E(14)、f/F(15)
5、sizeof计算数组中元素个数
当我们想知道一个数组中有多少个元素时,我们可以通过sizeof 来实现。
sizeof 是C语言中的一个关键字,是可以计算类型或是变量大小的,它也可以用于计算数组的大小。
这里的40是指数组所占空间的总大小,单位为字节(一个整型占4个字节)。我们知道,数组中的内容数据类型是相同的,因此,我们通过让数组的总大小除以单个元素的大小,即可知道数组中的元素个数。
二、二维数组
如果将一维数组视为元素,那么由它们构成的数组即为二维数组。
1. 二维数组的创建
type: 表示该数组所存放的数据类型
arr_name:表示数组名
常量值1:表示行数
常量值2:表示列数
例如:
3表示该数组有3行
5表示该数组每行有5个元素(列数)
int表示该数组每个元素都为整型
arr是数组名,可以根据需要进行命名
2. 数组的初始化
(1)不完全初始化
如图所示,当初始化过程不完全时,其空缺部分会被0填补。
(2)完全初始化
即数组的所有空间都被元素占用。
(3)按照行初始化
❗️注意:
当你省略行数时,程序会根据数组的列数和内容,自动分行。例如:当数组的元素个数为15,列数为5时,若省略行数,则程序会自动将其分为3行。
3. 二维数组的使用
(1)二维数组的下标
同一维数组一样,二维数组同样具有下标,以下图为例。
图中右侧的绿色数字代表行号,上侧的蓝色数字代表列号。当我们将行号设为2,列号设为4时,我们就可以找到数字7
(2)二维数组的输入与输出
为了打印二维数组中的内容,我们可以分别对行数和列数进行一次循环,来逐步打印其中的内容。
4. 二维数组在内存中的存储
同一维数组一样,我们可以通过打印数组内各元素的地址来观察其存储方式。
从结果来看,二维数组中各元素是相邻的,它们的地址之间差4个字节,由此,我们可以得出结论:
二维数组中的每个元素是连续存放的
三、Q & A
1.一维数组创建后,可以怎样初始化?
答:可以进行完全初始化,即给定数组大小并补满元素。
或进行不完全初始化,即省略数组的大小或只输入部分元素。
2.int arr[] = {0}; 这种写法合理吗?{0}的作用究竟是什么?
答:合理的,{0 }表明该数组中有一个元素,即为0,且数组的大小为1。
3. 数组下标从几开始?[]操作符是什么?
答:数组的下标从0开始;[]为下标引用操作符
4. 一维数组的内存特点?下标大小和内存地址的大小有何关系?
答:在一维数组中内存中是连续存放的;且数组随着下标的增长,内存地址也由小到大增长。
5.sizeof如何计算数组元素个数?
答:先利用sizeof 求出数组的总大小
再利用sizeof 求出单个元素的大小
最后将两者相除,即可得出数组中的元素个数。