学习笔记—— C语言——数组

本文详细介绍了C语言中一维数组和二维数组的概念、创建与初始化方法、下标使用、内存存储特性以及sizeof在计算元素个数的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

一、一维数组

二、二维数组

三、Q & A

//该篇文章使用的部分素材和内容来自比特就业课


一、一维数组

1. 数组的概念

数组是一组相同类型元素的集合,从这句话中可以提出两点:

1. 数组中存放1个或多个数据,但是数组元素个数不为0。

2. 数组中存放多个数据,但它们的类型都相同。

数组分为一维和多维数组,多维中较为常见的是二维数组。

2. 一维数组的创建与初始化

db2826ec4f71427090879ffeca25e133.png

其基本语法如上所示,其中:

type: 表示该数组所存放的数据类型

arr_name:表示数组名

[]:其中的常量值决定数组的大小(容量)

{}:用于表示数组中的内容

例如:创建一个名为student的数组,来储存学号为1~10的学生。

222e8c77451a483fb5c4c4f389b5b9fa.png

在本图中:

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个元素(即数组所存的内容)。

设置数组内数据类型并创立数组名的过程称为数组的创建,通过往数组的大括号内输入一些初始值的过程称为数组的初始化。

❗️注意:数组在进行初始化时也可分别省略[]和{}中的内容,如:

326dfa1604c842e2b31c348ae79da86f.png

此时,当数组内的元素有多少,其大小(容量)就为多少,本图中[]内省略的数字为3

87eb15d550c04db9a62dbb0fa665f6ca.png 

 

当省略{}内的内容时,数组会根据其自身的大小(容积)来用0填补空缺,因此对于数组arr来说,其元素为3个0;对于数组arr2来说,其元素为1、0、0。

 

3. 一维数组的使用

(1)数组下标

C语言规定数组中存在下标,即每个元素的编号。在数组中,第一个元素的下标为0第n个元素的下标为n-1

ea4ca9387e5849bbbcb8e1e5e18dc4d5.png

通过运用[]下标引用操作符,我们就可以使用下标来访问不同的元素了,如下图所示:

520b2b6ad9eb448eb102f02075ce9cf9.png

f76ee6fe7324451eb2ce404de67ff519.png 

 

(2)数组元素的打印 

当我们想要打印数组中的所有内容时,我们可以通过循环结构来实现,如下图所示:

80a4126519c749739f079e360633053e.png

79ac4aeaf1ef44e0990e448274346182.png 

(4)数组的输入 

当然,我们也同样可以利用循环结构实现对数组内容的输入。

ef06abeefba3484c8506874a46f9631e.png

87e34d0a0f6e48918faf63d6f4cab70e.png 

 4. 一维数组在内存中的存储

我们可以通过打印数组中各元素的地址来观察数组在内存中的存储

6cef7bc1b6a3470499648ff06eba89b4.png

 

d85a0170134945d58d743ef53e3d693d.png 

通过对数组中各元素地址的观察,可以发现数组随着下标的增长,地址也由小到大增长,并且我们发现每两个相邻元素之间的地址相差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语言中的一个关键字,是可以计算类型或是变量大小的,它也可以用于计算数组的大小。

c56799a0215949aa8cc06a82c24f8205.png 

e4fbb9554c204a5481eb0165def6fce8.png 

这里的40是指数组所占空间的总大小,单位为字节(一个整型占4个字节)。我们知道,数组中的内容数据类型是相同的,因此,我们通过让数组的总大小除以单个元素的大小,即可知道数组中的元素个数。

2b983f2ddb504e528217b6d115fa820e.png

61a6bed922a64742b535119b9e2a6f04.png 

 

二、二维数组

 如果将一维数组视为元素,那么由它们构成的数组即为二维数组

99449e08b7d74688b6bdfda2a19df88b.png

1. 二维数组的创建 

edc977adcd7c4f64ad8d52884def165b.png

 

type: 表示该数组所存放的数据类型

arr_name:表示数组名

常量值1:表示行数

常量值2:表示列数

例如:

d785c4e8866b4c6bb4d5231fd8404598.png

3表示该数组有3行

5表示该数组每行有5个元素(列数)

int表示该数组每个元素都为整型

arr是数组名,可以根据需要进行命名

 

2. 数组的初始化

(1)不完全初始化

62f0b731413b474992fab95c2bdaf1b7.png

2708dee2299a4908b3e4d751186262ac.png 

如图所示,当初始化过程不完全时,其空缺部分会被0填补。

(2)完全初始化 

a897c2e846354a729fa57b901ffa565d.png

即数组的所有空间都被元素占用。

 

(3)按照行初始化

758ec592fe2a49638f28b24dcd6202b3.png
❗️注意:

93e3b30323d84564a6ffb31829206615.png

 3f89e67363174da29fbe2359717d2fa0.png

当你省略行数时,程序会根据数组的列数和内容,自动分行。例如:当数组的元素个数为15,列数为5时,若省略行数,则程序会自动将其分为3行。

 

3. 二维数组的使用 

(1)二维数组的下标

同一维数组一样,二维数组同样具有下标,以下图为例。

be0a677bb6f247cb8e2249083c8e1cc0.png

图中右侧的绿色数字代表行号,上侧的蓝色数字代表列号。当我们将行号设为2,列号设为4时,我们就可以找到数字7

dec725060c0841a8b058c2cb11fb1d40.png

974dadad480e4fe686928ccdf608f7a7.png 

(2)二维数组的输入与输出 

为了打印二维数组中的内容,我们可以分别对行数和列数进行一次循环,来逐步打印其中的内容。

e8effc2b5e0c4aa8890c7793abc17d13.png

882c306ac4bc4d71a91fe0b6d4b62e50.png 

4. 二维数组在内存中的存储

 同一维数组一样,我们可以通过打印数组内各元素的地址来观察其存储方式。

0f5653a2bb56412888e82859fee1f114.png

a4ddb3c54e234e7985efba899b44e747.png 

从结果来看,二维数组中各元素是相邻的,它们的地址之间差4个字节,由此,我们可以得出结论:

二维数组中的每个元素是连续存放的 

 

三、Q & A

 

1.一维数组创建后,可以怎样初始化?

答:可以进行完全初始化,即给定数组大小并补满元素。

或进行不完全初始化,即省略数组的大小或只输入部分元素。

2.int arr[] = {0}; 这种写法合理吗?{0}的作用究竟是什么?

答:合理的,{0 }表明该数组中有一个元素,即为0,且数组的大小为1。

3. 数组下标从几开始?[]操作符是什么?

答:数组的下标从0开始;[]为下标引用操作符

4. 一维数组的内存特点?下标大小和内存地址的大小有何关系?

答:在一维数组中内存中是连续存放的;且数组随着下标的增长,内存地址也由小到大增长。

5.sizeof如何计算数组元素个数?

答:先利用sizeof 求出数组的总大小

         再利用sizeof 求出单个元素的大小

         最后将两者相除,即可得出数组中的元素个数。

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值