C语言之数组(保姆级)

一、一维数组

1.1、数组的创建方式:

数组是有限个相同类型数据元素的集合。

type_t   arr_name   [const_n];
//type_t 是指数组的元素类型
//const_n 是一个常量表达式,用来指定数组的大小

创建例子:

在这里插入图片描述

注意数组在创建时,[]里的必须是常量。但是如果编译器支持C99标准的话可以使用变量。

1.2、数组的初始化:

数组的初始化是指,在创建数组的同时给数组的内容一些合理初始值(初始化)。 看代码:

//不完全初始化
int arr1[10] = {1,2,3};
//省略大小的初始化
int arr2[] = {1,2,3,4};
//完全初始化
int arr3[5] = {12345}

总结

1.数组在创建时如果不指定数组的长度就要给数组初始化,数组根据初始化的值来确定数组大小。

2.数组如果不初始化默认值是0。

1.3、一维数组的使用

对于数组的使用我们介绍一个操作符: [] ,下标引用操作符。它其实就是数组访问的操作符。

如果我们想访问 arr第2个元素,我们就可以用 arr[1]的方式去访问。

代码:在这里插入图片描述

数组是通过下标来访问的,下标是从0开始的。

1.4、一维数组的存储方式

我们来研究一下一维数组在内存中的存储方式,我们通过输出数组各元素地址的方式来研究。

代码如下:在这里插入图片描述

输出地址我们用%p的格式,我们可以看到数组的每个元素地址都相差一个整形(4个字节),所以一维数组在内存当中是连续存放的。

注意:这里相差4个字节,是因为我的数组是整形类型的,如果定义别的数据类型,就会相差对应的大小。

总结:

1.一维数组在内存中是连续存放的。

2.地址是从低到高分配的
在这里插入图片描述

二、二维数组

2.1、二位数组的创建

说完了一维数组,二维数组就是一维数组的扩展。

二位数组的创建:在这里插入图片描述
arr [ ][ ] 第一个[ ]是行,第二个[ ]是列。

2.2、二维数组的初始化

在这里插入图片描述

二位数组的行可以省略 ,但列不能省略。

2.3、二位数组的使用

二位数组的使用也是通过下标的方式访问:
在这里插入图片描述

2.4、二位数组的存储方式

我们还是通过看地址的方式来研究
在这里插入图片描述
根据上图我们发现二维数组也是一块连续的空间
在这里插入图片描述

三、数组的数据类型

数组也是有类型,正如:整数为整型类型,字符为字符类型等等。

而数组类型该是怎样的呢?
你也许可能会猜:假如一个这样的数组 int arr[10],是不是就是int类型。可结果且大失所望。

不难推测,如果我给你一个整型的变量,形如下面:

int a = 10;
当我问你int a的数据类型是什么时,你会毫不犹豫的说整形,那我问你为啥是整形是,你说记住了。

不妨我们换个思路,int a去掉a剩下int,是不就是int类型了,char b去掉b是不就是char类型了。

基于这种思路,我们再来拆分数组的数据类型就简单多了。

int arr[10]去掉arr,int [10]就是数组的类型。

我们可以用vs调试来验证一下
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值