一.数组的概念
数组是一组相同类型元素的集合:
- 数组中存放的是一个或多个数据,数组元素的个数不能为0
- 数组中存放的多个数据,类型是相同的
- 数组分为一维数组和多维数组,多维数组比较常见的是二维数组。
二.数组的创建和初始化
1.数组的创建
存放在数组的值被称为数组的元素,数组在创建的时候可以指定数组的大小和数组的元素类型。
-
type指定的是数组中存放数据的类型,可以是:char,short,int,float等,也可以自己定义类型
-
arr_name 指的是数组名的名字,这个名字尽量取的有意义
-
[]中的常量值是用来指定数组的大小的,这个数组的大小根据实际需求指定。在数组创建的时候,[]只能是常量。
- C99之前数组的大小只能是常量指定,不能使用变量。
- C99之后为什么就能使用变量了呢?—变长数组
-
用法类型
2.数组的初始化
初始化的概念:给定初始值
数组的初始化一般都放在大括号中。例如
如果数组初始化了,是可以省略掉数组大小的。数组的大小,是编译器根据初始化的内容确定的
3.数组的类型
数组是[[C语言 数据类型和变量#^4a49f6|自定义类型]],去掉数组名留下的就是数组的类型
三.一维数组的使用
一维数组可以存放数据,存放数据的目的是对数据的操作,那我们如何使用一维数组呢?
1.数组下标
-
概念:C语言规定数组是有下标的,下表是从0开始的,假设有n个元素,那么最后一个元素的下标是n-1。下标就相当于数组元素的编号。
-
数组就是通过下标来进行访问的。为此,C语言提供了下标引用操作符—[],具体操作:
-
数组不能分配常量为0的数组
2.数组的打印与输入
a.打印
b.输入
- 由此可以见的,下标的范围是可以灵活控制的
四.一维数组在内存中的存储
依次打印地址
- 从输出的结果我们分析,数组随着下标的增⻓,地址是由⼩到⼤变化的,并且我们发现每两个相邻的 元素之间相差4(因为⼀个整型是4个字节)。所以我们得出结论:数组在内存中是连续存放的。这就 为后期我们使⽤指针访问数组奠定了基础(在讲指针的时候我们在讲,这⾥暂且记住就⾏)。
五.sizeof计算数组元素个数
- [[C语言 数据类型和变量#^d0a1f0|sizeof]]概念
- 求数组元素个数的写法
六.二维数组的创建
1.概念
数组的元素都是内置类型的,如果我们把一维数组作为数组的元素,这时候就是二维数组,二维数组作为数组元素的数组叫做三维数组,二维数组以上的数组叫做多维数组。
2.二维数组的创建
-
语法如下:
- 3表示3行,5表示5列
- int 表⽰数组的每个元素是整型类型
- arr是数组名,可以根据⾃⼰的需要指定名字data数组意思基本⼀致。
七.二维数组的初始化
-
与一维数组的初始化基本相同,下面是二维数组的不完全初始化
-
完全初始化:
-
初始化的同时也可以指定行:
-
初始化时可以省略行,但不能省略列:
- 一行放不下的,会放到第二行
八.二维数组的使用
1.二维数组的下标
与一维数组相同,二维数组也可以通过下标锁定元素。C语⾔规定,⼆维数组的⾏是从0开始的,列也是从0开始的。
a.打印
b.输入
九.二维数组在内存中的存储
打印地址如下
-
分析得:以⼆维数组中的每个元素都是连续存放的。
- 了解清楚⼆维数组在内存中的布局,有利于我们后期使⽤指针来访问数组的学习。
十.C99中的变长数组
-
**在C99 之前创建数组的方式,数组的大小是使用常量,常量表达式指定的
-
C99中,引入了变长数组的概念,允许数组的大小是变大的
-
数组的大小根据输入变量值的大小来确定它的大小。
-
变长数组是不能初始化的。
-
变长数组的边长仅仅是指数组的大小可以用变量指定,并不是数组的大小可以变化的。只是说,我们每一次运行起来开一根据我们的需要给n输入值。