题外话:二维数组的每一行或者每一列都是一维数组。由此我们可以知道:二维数组是由一维数组组成的,也可以知道三维数组是由二维数组组成的。
一.二维数组的创建:
type arr_name[常量值1][常量值2]//type可以是int/double等类型。常量值1一般是几行,常量值2一般是几列。(先横后竖)
例如:
int arr[3][5];
int date[4][6];//数组arr 3行5列,数组date 4行6列。
二.二维数组的初始化
1.不完全初始化
int arr[3][2] = { 1,2,3 };//总共有六个元素,但是我只对前三个数值进行了初始化。那么你可能会有点疑问前三个在二维数组里面的具体位置如何?
我用【】来表示一个二位数组里各个数值的位置:
0 1
0【1】 【2】
1【3】 【0】
2【0】 【0】
总得来说,就是从上到下的同时也要从左到右。且对于没有初始化的部分我们默认其中的数值为0。
2.完全初始化
理解不完全初始化之后你就很容易理解完全初始化了,即将数组中的所有元素一一写出。
3.按行初始化
前面我们提到二维数组是由一行行一维数组构成的。那么我们初始化的时候也可以采用按行初始化。例如下面这一段代码:
int arr[3][2] = { {1},{2},{1} };
解释一下:大括号中套的小括号里的每一个元素是每一行一维数组的元素,因为我这里是不完全初始化,所以我数组第一列从上到下依次是1,2,1,其他没有初始化的地方依然默认为0。
4.一点可以偷懒的地方
此外,在我们对二维数组进行初始化的时候,我们可以省略常数值1,也就是行数。
例如以下这一行代码:
int arr[][2] = { 1 };
解释一下:这个二维数组告诉我们有两列其实就是告诉我们了每一行只有两个数值。因为我初始化时只给了一个元素1,那么我连第一排的两个位置都放不满,所以计算机会默认这个二维数组只有一行。输出的结果就是【1】【0】。(这里我同样用【】符号来表示数组的输出位置)
大家可以理解一下,然后试着看看下面两行代码的输出结果,答案我就不放了。
int arr[][4]={1,2,3,6,5,8,5}
int arr[][3]={{1,2},{3,4},{5,6},{7,8}