最近有不少同学询问有关数组的相关问题,相信学过C语言的同学都知道数组的重要性,今天就来给大家分享一下它的使用方法,干货较多,建议收藏观看哦。
一、数组
1、数组的基本概念
数组:类型相同的数据元素的集合,是C语言中的一种构造数据类型,这些元素会顺序地储存在内存的某段区域。
2、数组的特点
(1)数组是一种引用类型数据,存放在内存中。
(2)数组当中存放多个数据(元素),类型必须统一。
(如果定义的是int类型,那么里面的所有元素都必须是int类型)
(3)数组的长度在运行当中不允许改变。
(定义的数组元素个数在运行的过程当中不允许改变)
3、数组定义语法
数组类型 数组名[数组大小]
(1)数组大小:决定了数组中能够存放的元素数量。
(2)数组大小不能是变量,只能是字面值或字面值表达式。
(3)C语言编译器要求在编译期间就需要确定数组的内存大小。
(4)数组大小必须是大于0的正整数。
二、一维数组
1、一维数组的创建和初始化
(1)一维数组的创建
数组的创建方式:
数组创建的实例:
注:数组创建, [] 中要给一个常量才可以,不能使用变量。可以直接用常量,或者使用宏定义。
(2)一维数组的初始化
数组的初始化是指,在创建数组的同时给数组的内容一些合理初始值(初始化)。
1)全部初始化
初始化列表:用大括号括起来的,用于对数组进行初始化的一个值的列表,每个值之间通过逗号隔开。
初始化列表只能在定义数组时使用,数组定义完成后不能再使用初始化列表给数组赋值。
全部初始化要求初始化列表中各元素个数必须与数组大小相同。
2)部分元素附初值
实际开发中,通常采用部分元素赋初值的方法对数组元素进行初始化,如:int arr[100]={0};
3)省略长度赋初值
定义数组时,如果后面跟有初始化列表,并且初始化列表中的值的个数就是预期的数组大小,则可省略括号中的数组大小。
4)在内存中的存储
2、一维数组的使用
[ ] ,下标引用操作符。它其实就数组访问的操作符。我们来看代码:
注意:
(1)sizeof()操作符用于取长度,以字节为单位。sizeof(数组名)即求的时整个数组的大小。sizeof(首元素)即求数组单个元素大小。用0下标,是因为数组至少存在一个有效元素,所以0下标永远存在。
(2)数组是使用下标来访问的,下标是从0开始。
(3)数组的大小可以通过计算得到。建议采用sizeof(arr)/sizeof(arr[0])这种方式。
3、一维数组在内存中的存储
看代码:
输出结果如下:
仔细观察输出的结果,可知随着数组下标的增长,元素的地址,也在有规律的递增。
由此可以得出结论:数组在内存中是连续存放的。
总结:
(1)数组在内存中开辟是线性连续且递增的。
(2)在c语言中,任何变量(基本变量,指针变量,结构体变量,数组变量)的空间都是整体开辟,但任何元素的起始地址一定是开辟字节当中最小的。
三、二维数组
1、二维数组的创建和初始化
(1)二维数组的创建
二维数组创建时,行数可以忽略不写。并且所有维度的数组其第一个方括号的内容可忽略。
(2)二维数组的初始化
1)全部初始化
顺序全部赋初值
2)部分初始化
按行部分赋初值
顺序部分赋初值
3)省略长度初始化
可省略长度,不可省略列数。
按行:
按列:
2、二维数组的使用
二维数组的使用也是通过下标的方式,用双重循环嵌套进行索引使用。看代码:
3、二维数组在内存中的存储
像一维数组一样,这里我们尝试打印二维数组的每个元素。
输出结果为:
通过结果我们可以分析到,其实二维数组在内存中也是连续存储的。
总结:
(1)二维数组在内存的空间布局上,也是线性连续且递增的。
(2)二维数组本质上也是一维数组,只不过内部元素放的是一维数组。
【学习资料】给大家分享一些c语言学习资料,需要的点击下方链接即可学习:
学习交流群:878708054