c语言数组的概念与使用

本文详细介绍了C语言中数组的概念,包括一维数组的定义、初始化、类型、内存存储以及元素个数计算,以及二维数组的创建、初始化、使用和内存结构。通过实例展示了数组操作和内存布局的关键知识点。
摘要由CSDN通过智能技术生成

目录

数组的概念

一维数组的定义

一维数组的初始化

​编辑

数组的类型

一维数组的使用

数组元素的输入和打印

一维数组在内存中的存储

计算数组中的元素个数

二维数组的创建

二维数组的初始化

二维数组的使用

二维数组的输入输出

二维数组在内存中存储


数组的概念

数组分为⼀维数组和多维数组,多维数组⼀般⽐较多⻅的是⼆维数组;
数组中存放的是1个或者多个数据,但是数组元素个数不能为0;
数组中存放的每一个数据,类型必须是相同的;

一维数组的定义

要使用数组,就要先创建数组,那么数组应该如何创建呢?实际上数组的创建和我们之前学习过的变量的定义差不多,下面让我们用一张图来解释

图中我们大概可以知道数组的创建格式:类型说明符  数组名[ 常量/常量表达式 ]

类型说明符:char   int  float  double等等。

数组名:一般根据实际情况定义有意义的名字。

[ ]:里面的常量值决定来数组的大小,这个值根据需求来指定就⾏。

例如:我要定义一个数组来存储一个班50个人的成绩

一维数组的初始化

数组的初始化有两种:完全初始化和不完全初始化

数组的类型

数组也是有类型的,例如:上图中数组a的类型就是int[3],表示a是一个由3个int类型元素组成的数组。

a的数组类型是:int[3]
b的数组类型是:char[2]
c的数组类型是:double[5]
一维数组的使用

引用数组名的表示形式:数组名[下标]

C语⾔规定数组是有下标的,下标是从0开始的,假设数组有n个元素,最后⼀个元素的下标是n-1
标就相当于数组元素的编号。

例如数组:int a[10]={1,2,3,4,5,6,7,8,9,10};

数组a中每个元素对应的下标如下

所以当我们想要打印数字5时,那么我们就可以使用a[4]

数组元素的输入和打印

数组中的元素也可以根据我们的需要自己去输入,可以利用循环来输入每个元素的数据

一维数组在内存中的存储
如果我们要继续深⼊研究数组,我们最好能了解⼀下数组在内存中的存储,下面让我们来打印数组中每个元素的地址

从图中的输出结果我们可以看到,数组a中的元素的地址是按照下标的顺序逐渐递增的,并且每两个相邻的元素之间的地址相差4(因为一个整型是4个字节),所以我们可以得出结论: 数组的元素在内存中是连续存放的。
注意:十六进制是:1,2,3,4,5,6,7,8,9,A,B,C,D,E,F。
计算数组中的元素个数

如果我们在遍历数组的时候不知道数组的元素个数,那么该怎么办呢?这里就要用到一个c语言中的一个关键词:sizeof。它可以计算类型或者变量大小,当然,我们也可以用来计算数组的大小

这里的测试结果是40,这是因为整型数组a中每个元素的类型相同并且都是4个字节,所以10个元素就是40,那么我们居既然知道了一个整型是4个字节,我们只需要用40来除以4就可以得到数组中的元素个数了

这样我们就可以计算出数组a中的元素个数了。

二维数组的创建

前面的内容是一维数组的基本概念,那么如果我们把一维数组当成一个数组的元素,这个时候就变成了二维数组,当然,如果把二维数组当成一个数组的元素,那就是三维数组,二维数组及以上的数组就叫多维数组。

定义二维数组的例子如下

解释:

3:意思是这个数组有3行。

5:意思是这个数组有5列

int:是数组中每个元素的类型。

a:是数组的名字。

所以我们可以知道二维数组的定义格式:类型 数组名[常量1][常量2]

二维数组的初始化

其实二维数组的很多地方与一维数组有类似的地方,初始化也是使用大括号来完成的

二维数组的不完全初始化:

二维数组的完全初始化:

按照行进行初始化:

二维数组初始化的时候可以省略行,但是注意不能省略列哦!

二维数组的使用

二维数组的使用也是通过下标来引用的,在c语言中,二维数组的行和列都是从0开始的

图中左边的绿色的数字代表行,蓝色数字代表列,都是从0开始的,如果我们想要打印二维数组中的数字7,那么就是第二行第四列,也就是a[2][4]。

二维数组的输入输出

现在我们知道了二维数组的创建和引用,那么如果我想要在二维数组中输入我想要的数据,应该怎么实现呢?如果我还想要把二维数组中的所有元素输出,又怎样才能方便快捷呢?让我们以上面的数组a[3][5]为例,借助循环来实现

二维数组在内存中存储
像⼀维数组⼀样,我们如果想研究⼆维数组在内存中的存储⽅式,我们也是可以打印出数组所有元素的地址的

从图中我们可以看出来,二维数组中的相邻元素之间相差4,跨行位置处的两个元素也是相差4(如   a[0][4]   和   a[1][0]   之间也是相差4个字节),所以二维数组中的元素也是按照升序来连续存放的。

关于数组的内容就讲这么多啦!第一次手打这么长的文章,真心不易,因为刚踏入c语言的大门不久,如果有错误的地方欢迎各位小伙伴来指出,最后都看到这里了,给个点再走吧

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值