一维数组的创建使用与存储
一. 一维数组的创建 数组是一组相同类型元素的集合具体模板为: type_t arr_name [const_n];
type_t是指数组的元素类型 arr_name表示的是数组名 const_n 表示的是数组的大小,必须是常量。
数组创建实例: int arr1[10]; 此语句表示的是创建一个名字为arr1的用来存储int类型的数组,数组的大小为10,也就是能存储十个int类型的整数。
int count = 10; int arr[count]; 此时数组的创建是错误的,因为这里用来表示数组的值是一个变量,所以数组不能正常创建。
二. 数组的初始化 数组的初始化是在创建数组的同时给数组的内容一些合理的初始值如下图: 上图表示在创建数组的同时并对数组中每个位置的值进行了初始化。 数组也可以像上图这种进行初始化,此时[]内部会自动对你初始化的元素个数进行判断,来对数组的个数进行判断。
三. 一维数组的使用 如上图:
-
sizeof(a)可以表示数组a所占的字节数,sizeof(a[0])表示的是数组中第一个元素所占的字节,所以两个数值相除就可以得到数组中元素的个数。 -
数组可以用下标的方式来进行访问,应用的操作符为[],下标从0开始进行访问。
四. 一维数组在内存中的存储 在内存中一维数组之间的地址是连续的,并且地址的大小是从左到右以此增大的,其两个地址之间相差的是数组中类型所占的字节数的大小具体如下图: 由此图可以证明上面的结论,可以看到上图中数组中每个元素之间的地址相差4,也就是int类型所占的字节的大小。
二维数组的创建使用与存储
一. 二维数组的创建 类比上面的一维数组的创建可得,二维数组的创建为: int arr[3][4]; 此语句表示的是创建一个三行四列的数组,数组中存储的类型是int类型。
二. 二维数组的初始化 和一维数组相同,二维数组的初始化也是用’{}'来进行初始化,而和一维数组的不同是,二维数组是不可以int a[][] = {1 , 2 , 3};这样创建的,二维数组最多只能不写行数,如可以int a[][2] = {{1 , 3} , {1 , 2}};这样进行创建,而不能省略列的原因是如果省略了列数,那么就不知道一行到底存了多少个元素,所以就不能判断行数,所以创建的时候不能使用列数。
三. 二维数组的使用 和一维数组相同,二维数组也是用下标进行访问的,并且下标是从0开始的。如上图如果数组中元素不足以分配给行数和列数,则需要在后面补零。
四. 二维数组在内存中的存储 由代码可以看出来,二维数组和一位数组也是一样的,其元素间的地址是连续的,其元素间的地址之差是数组中元素类型的字节数。
数组作为函数参数
如上图用数组作为函数的参数其实就是将数组的首地址的地址传输给形参,而因为数组间的元素的地址都是连续的,所以对于数组来说只要知道数组的首元素地址也就知道了数组的所有地址与数值。
|