目录
1.一维数组的创建和初始化
2.一维数组的使用
3.一维数组在内存中的存储
4.计算数组的元素个数
5.二维数组的创建及初始化
6.二维数组的使用
1.一维数组的创建和初始化
首先,我们学习前要先了解什么是数组?数组是一组相同类型元素的集合,数组中存放一个或多个元素,元素个数不能为0。
1.1数组的创建
一维数组的形式为:
1 type arr_name[常量值];
存放在数组的值称为数组的元素,数组在创建的时候能指定数组的大小和数组的元素类型;上述形式中,type指定的是数组中存放的数据类型;arr_name是数据的名字,可以自行定义;[ ]里的常量值用来指定数组的大小。
1.2数组的初始化
数组的初始化:即在创建数组时设定一些初始数值。
2.一维数组的使用
数组的下标是从0开始的,假设数组有n个元素,则最后一个元素下标是n-1。
1 int arr[6] = {1,2 3,4 5,6};
数组 | 1 | 2 | 3 | 4 | 5 | 6 |
下标 | 0 | 1 | 2 | 3 | 4 | 5 |
如果我们要访问数组的元素就要用到下标引用操作符[ ],例如我们要访问下标为5的元素,就可以使用arr[7]。
3.一维数组在内存中的存储
我们通过依次打印数组位置的方法来理解数组在内存中存储的关系:
通过代码运行结果分析我们发现数组随着下标的增长,数组由小到大变化且每两个相邻元素之间相差4,从而得出结论:数组在内存中是连续存放的。
4.计算数组的元素个数
C语言中有个关键字sizeof来计算数组类型或者数组的大小。
4.1计算数组所占内存空间的总大小
这里输出结果为24是因为上述数组有六个元素,一个整型是四个字节,所以所占内存空间的总大小为24字节。
如果我们知道数组中所有元素类型全相同,则只需计算一个元素所占字节的个数就能算出数组的元素个数,一般选择计算第一个元素的大小:
这里计算出第一个元素的大小为4。
4.2计算数组的元素个数
代码运行结果为6,证明该数组的元素个数为6个。
5. 二维数组的创建及初始化
二维数组的形式如下:
1 type arr_name[常量值1] [常量值2];
2 | | \ /
3 类型 数组名字 数组大小
4
5 例如:
6 int arr [1][8];
7
8 1表示数组有1行,8表示每一行有8个元素
不完全初始化:
1 int arr1[2][4] = {1,8};
2 int arr2[2][4] = {0};
1 | 8 | 0 | 0 |
0 | 0 | 0 | 0 |
arr1数组
0 | 0 | 0 | 0 |
0 | 0 | 0 | 0 |
arr2数组
完全初始化:
1 int arr3[2][4] = {1,2,3,4, 2,3,4,5};
1 | 2 | 3 | 4 |
2 | 3 | 4 | 5 |
arr3数组
6.二维数组的使用
C语言规定二维数组的行是从0开始的,列也是从0开始的
二维数组的打印:如同一维数组一样,我们可以通过打印数组所有元素的地址来探索数组在内存中的存储方式:
从运行结果我们可以发现每一行内部的每个元素都是相邻的,地址之间相差四个字节,跨行位置处的两个元素也是相差四个字节 ,所以我们得出结论:二维数组中的每个元素都是连续存放的。
习题1:
输出:
0 | 1 | 2 | 3 | |
0 | 1 | 2 | 3 | 4 |
1 | 5 | 6 | 7 | 8 |
2 | 9 | 0 | 0 | 0 |
arr[1][2]=7;
arr[0][4]=5;//二维数组的底层是一维数组
arr[1][0]=5;
arr[2][3]=0;
arr[3][1]=-858993460;//越界访问到随机值
习题2:多个正负从两端移动向中间汇聚
参考代码如下: