数组
1. 数组的概念
数组是一组相同类型元素的集合
- 数组中存放的是1个或者多个数据,但是数组元素个数不能为0。
- 数组中存放的多个数据,类型是相同的。
数组分为一维数组和多维数组,多维数组一般比较多见的是二维数组。
2. 一维数组的创建和初始化
2.1 数组创建

存放在数组的值被称为数组的元素,数组在创建的时候可以指定数组的大小和数组的元素类型。

2.2 数组的初始化
数组在创建的时候,我们需要给定⼀些初始值,这种就称为初始化。
数组的初始化一般使用大括号[ ],将数据放在大括号中。
数组如果进行了初始化,数组的大小是可以省略掉的。


2.3 数组的类型
数组也是有类型的,数组算是一种自定义类型,去掉数组名留下的就是数组的类型。

3. 一维数组的使用
一维数组可以存放数据,存放数据的目的是对数据进行操作,以下为如何使用一维数组的介绍。
3.1 数组下标
C语言规定数组是有下标的,下标是从0开始的,假设数组有n个元素,最后⼀个元素的下标是n-1,下标就相当于数组元素的编号,如下:

在C语言中数组的访问提供了一个操作符[ ],这个操作符叫:下标引用操作符。
有了下标访问操作符,我们就可以轻松的访问到数组的元素了,比如我们访问下标为7的元素,我们就可以使用arr[7] 。
3.2 数组元素的打印
访问整个数组的内容

3.3 数组的输入

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

5. size of 计算数组元素个数
C语言中使用size of计算数组元素个数
size of 不仅可以计算类型或者变量大小,也可以计算数组的大小。

这里输出的结果是40,计算的是数组所占内存空间的总大小,单位是字节。


6. 二维数组的创建
6.1 二维数组的概念
前面学习的数组被称为一维数组,数组的元素都是内置类型(char int short long double) 的,如果我们把一维数组做为数组的元素,这时候就是二维数组,二维数组作为数组元素的数组被称为三维数组,二维数组以上的数组统称为多维数组。

6.2 二维数组的创建
二维数组语法如下



7. 二维数组的初始化
二维数组也是和一维数组一样使用大括号初始化。
7.1 不完全初始化


7.2 完全初始化

7.3 按照行初始化

7.4 初始化时省略行,但是不能省略列

8. 二维数组的使用
8.1 二维数组的下标
二维数组访问也是使用下标的形式的,二维数组是有行和列的,只要锁定了行和列就能唯一锁定数组中的一个元素。
C语言规定,二维数组的行是从0开始的,列也是从0开始的。

8.2 二维数组的输入和输出

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



10. C99中的变长数组

变长数组的根本特征,就是数组长度只有运行时才能确定,所以变长数组不能初始化。它的好处是程序员不必在开发时,随意为数组指定一个估计的长度,程序可以在运行时为数组分配精确的长度。
有⼀个比较迷惑的点,变长数组的意思是数组的大小是可以使用变量来指定的,在程序运行的时候,根据变量的大小来指定数组的元素个数,而不是说数组的大小是可变的。数组的大小一旦确定就不能再变化了。
11. 数组练习
练习1:多个字符从两端移动,向中间汇聚
编写代码,演示多个字符从两端移动,向中间汇聚



练习2:二分查找
给定一个升序的整型数组,在这个数组中查找到指定的值n,找到了就打印n的下标,找不到就打印:“找不到”。
方法一:遍历数组
方法二:二分查找(折半查找)
二分查找的前提是升序





