1.一维数组的创建与初始化
一维数组的创建是格式是
type_t arr_name [const_n];
type-t是数组的数据类型,arr-name是数组名,[]是数组创建的大小,中括号内是常量(在C99语法中可以为变量,但是不能初始化)。
如下面的例子
int arr []={1,2,3,4};
char arr1[]={a,b,c};
数组的初始化和变量的初始化类似
int arr[]={0};
数组还有不完全初始化,数组中第三个位置初始化成0 。
int arr[3]={0,2};
2.一维数组的使用
一维数组在使用时要使用下标进行引用,例如arr[1]。
数组的下标是从0开始。
数组的大小是是可以进行计算,数组的大小可以用sz=sizeof(arr)/sizeof(arr[0])进行计算。
3.数组的地址
数组在内存中的存储是连续存在的。
数组的名字在使用时是数组第一个的地址如果sizeof(arr)那么表示数组的大小, &arr那么表示的是数组的地址(数组的地址一般是以第一个来表示)。如下图
4.二维数组的创建与初始化
二维数组的创建的语法结构是
type_t arr_name [const_n] [const_n];
二维数组中前一个[]内代表了二维数组中行数,后者代表了二维数组的列数。
二维数组的初始化与一维数组的初始化相似,可以表示成以下的形式
int arr[5] [6]={1,2,3,4,5,6}
int arr[5] [6]={(1,2},{3,4,5},{6}}
int arr[5] [6]={{1,2,3,4,5,6}}
上面第二个就是不完全初始化,其中数组中行数可以省略,列数无法省略,这个是由于一旦省略数组的列数就无法存储和调用二维数组了。
我们可以有以下理解二维数组的的方法
二维数组是两个一维数组 嵌套而成的,我们可以将每一行 构成了一个数组,,而这些数组又构成了二维数组,我们可以理解这些数组是以arr[0][],arr[1][],arr[2][].构成的。这样我们就能理解为什么二维数组为什么不能省略列数,可以省略行数,因为行数相当于一维数组中[].
5.二维数组的使用和存储
二维数组是由arr[2][4]中括号中的·数字来使用的。二维数组的在内存的存储是将按行列依次排成一类,在内存进行存储,同样的也是连续存在的。
6.二维数组的函数名
二位数组的数组名代表了二维数组的一行的地址(以第一个地址来表示)。而&arr代表了整个数组的地址(以第一个地址来代表),sizeof(arr)代表了数组的大小,如下图举例。
上面还介绍了二维数组怎么求元素个数和求行数和列数。
7.越界访问
越界访问就是在访问数组元素时访问了数组外的元素。
例如下图
8.练习
从大到小进行排序数组内的元素。如下图