二维数组的感悟

二维数组
定义
二维数组本质上是一个行列式的组合,也就是说二维数组由行和列两部分组成。属于多维数组。二
维数组数据是通过行列进行解读。
二维数组可被视为一个特殊的一维数组,相当于二维数组又是一个一维数组,只不过它的元素是一
维数组。(也就是说数组的元素的类型可以是数组类型)
语法
数据类型 数组名 [ 行数 ][ 列数 ]; // 二维数组外层表示行数,内层表示列数
举例:
int arr [ 3 ][ 3 ] = {{ 11 , 12 , 13 },{ 21 , 22 , 23 },{ 31 , 32 , 33 }}; // 正确,等价于下面写法
int arr [][ 3 ] = {{ 11 , 12 , 13 },{ 21 , 22 , 23 },{ 31 , 32 , 33 }}; // 正确,广义上称之为柔性数组
int arr [ 3 ][ 3 ] = {{ 11 , 12 },{ 21 , 22 , 23 },{ 31 }}; // 正确,等价于下面写法
int arr [ 3 ][ 3 ] = {{ 11 , 12 , 0 },{ 21 , 22 , 23 },{ 31 , 0 , 0 }}; // 正确
int arr [ 3 ][ 3 ] = {}; // 正确,所有的元素使用 0 填充
int arr [ 3 ][ 3 ] = {{ 11 }}; // 正确,未初始化的元素使用 0 填充
int arr [][] = {{ 11 , 12 , 13 },{ 21 , 22 , 23 },{ 31 , 32 , 33 }}; // 错误,这种写法,会编译标错,不能省略列数
int arr [ 3 ][] = {{ 11 , 12 , 13 },{ 21 , 22 , 23 },{ 31 , 32 , 33 }}; // 错误,这种写法,会编译标错,不能省略列数
注意:在 C 语言中,二维数组在计算机的存储顺序是按行进行的,即第一维的 ( ) 下标变化慢,第二
维的 ( ) 下标变化快。
应用场合
主要应用于数据有行列要求的情况。比如说我们现在要存储粤嵌目前在读班级的学生的成绩。
特殊写法
下标可以是整型表达式,如: a[2-1][2*2-1]
下标可以是已经有值的变量或数组元素,如: a[2*x-1][b[3][1]]
数组元素可以出现在表达式中,如: b[1][2] = a[2][3]/2
注意:使用数组元素的下标应在已定义数组的大小范围内;应注意区别定义数组大小和引用数组元
素的区别。
初始化
分行给二维数组赋初值
int arr [ 3 ][ 4 ] = {{ 11 , 12 , 13 , 14 },{ 21 , 22 , 23 , 24 },{ 31 , 32 , 33 , 34 }};
可将所有数据写在一个花括号内,按照排列顺序对元素赋值
int arr [ 3 ][ 4 ] = { 11 , 12 , 13 , 14 , 21 , 22 , 23 , 24 , 31 , 32 , 33 , 34 };
可对部分元素赋初值,其余未赋值部分自动填充 整型默认值 -0 | 字符型默认值 -\0 | 浮点型默认
-0.0..
int arr [ 3 ][ 4 ] = {{ 11 },{ 21 , 22 },{ 31 }};
若对全部元素赋初值,自定义数组时可以省略第 1 维数组的长度,第 2 维数组的长度必须指明。
int a [][ 4 ] = { 11 , 12 , 13 , 14 , 21 , 22 , 23 , 24 , 31 , 32 , 33 , 34 };
在分行赋初值时,也可以省略第 1 维的长度。
int arr [][ 4 ] = {{ 11 , 12 , 13 },{ 0 },{ 0 , 10 }};

你可能感兴趣的:(数据结构)