第五讲:数组

1.数组的概念

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

3.一维数组的使用

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

5.sizeof计算数组元素个数

6.二维数组的创建

7.二维数组的使用

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

10.数组练习

1.数组的概念

数组是一组相同类型元素的集合

1.1元素类型是相同的

1.2数组内可以有一个或多个元素,但不能没有

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

2.1创建:type arr_name[正整数];

type:数组内元素的类型

arr_name:数组名

正整数:决定元素的个数

2.2初始化:type arr_name[正整数]={元素1,元素2,元素3......};

正整数可以省略,设定正整数时,要注意,该数值不能小于初始化的元素个数。

int arr[5]={1,2,3,4,5};//完全初始化

int arr[5]={1};//不完全初始化,第一个元素是1,其余的默认为0

2.3数组的类型,去掉名字就是类型

例子:int arr[5];

该数组的类型是int 【5】.

2.4数组初始化方括号内的数字可以省略,该数字默认为元素的个数

2.5字符数组初始化的两种方式

第一种:共三个元素,方括号内的数字默认为3

第二种:字符串用于初始化字符数组时,该字符串会被复制到字符数字中,是一种特殊的情况,字符串的末尾有个'\0',所以共4个字符,有4个元素,方括号内默认为4.

3.一维数组的使用

3.1数组下标

数组元素序号123
下标012

也就是说,第一个元素的下标是0,第二个是1,以此类推。

我们可以使用下标访问操作符(【】)通过下标来访问其对应的元素

举例:访问第一个元素:arr[0];

           访问第二个元素:arr[1];

3.2:使用一维数组

#include <stdio.h>
int main()
{
	int arr[3];//创建1个数组,它拥有三个元素
	arr[0] = 1;//使用下标访问操作符,通过下标(0)来访问第一个元素
	           //并将其赋值为1
	printf("%d", arr[0]); //使用下标访问操作符,通过下标(0)来访问第一个元素
						  //并将其打印到屏幕
	return 0;
}

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

我们打印数组每个元素的地址,发现两个相邻元素的地址相差4(地址是16进制的)

5.sizeof计算数组元素个数

sizeof是关键字可以计算类型变量的大小

1.计算类型:

size_t a = sizeof(int);

1.1 size_t是一种类型,叫无符号整型,约等于unsigned int

1.2 a的值是4,因为int类型的变量占4个字节

2.计算数组元素个数

2.1 %zd打印size_t类型的数据

6.二维数组的创建

6.1一个二维数组是由多个·一维数组所构成的,二维数组的元素是一维数组

6.2 创建二维数组:type arr_name[正整数][正整数];

6.2.1 type:二维数组中的一维数组中的元素的类型

6.2.2 arr_name:数组名

6.2.3 第一个方框内的正整数能省略,第二个不能。

为什么不能?

1.假设有数组:int arr[][3];假设数组有6个元素,我们可以这么放

123
456

可以正常放

假设有数组:int arr[3][];假设数组有6个元素,我们可以这么放

12
34
56

我们也可以这么放

123
456

还可以这么放

1234
56

有多种放法,方法不唯一,不能明确指的是那种方法

6.3 二维数组的初始化

按照顺序初始化

int arr[3][3]={1,2,3,4,5,6};

123
456

按照行初始化

int arr[3][3]={{1,2},{3,4},{5,6}};

12
34
56

7.二维数组的使用

int arr[3][3]={1,2,3,4,5,6,7,8,9};

下标012
0123
1456
2789

访问第一个一维数组的第一个元素:arr[0][0];

访问第2个一维数组的第3个元素:arr[1][2];

访问第3个一维数组的第2个元素:arr[2][1];

以此类推

8.二维数组中一维数组中的元素中的存储也是连续的,即使它们不在同一行,假设有定义:int arr[2][2]={1,2,3,4};

下标01
012
134

arr[1][0]的地址与arr[0][1]的地址也相差4

不信?

放图!

上面的图空行只是方便理解,在内存中存储时可是不会“空行”的哦!

  • 26
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

INUYACHA

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值