C语言自学笔记(10)

二维数组

1、声明:
与一维相似,只是多增加一个表示二维下标的常量表达式;形式:
类型说明符 数组名[常量表达式1] [常量表达式2] …;
常量表达式1表示第一维下标的长度,常量表达式2表示第二维下标的长度;
例:float score[4] [5]; 声明一个二维数组,该数组拥有4行5列,共20个数组元素
二维数组结构如图:
C语言自学笔记(10)
2、存储:
C编译器将其转换为一维线性排列,也与一维存储类似将所有数据顺序存放在内存中。
将二维的数据准换为一维的形式存放有两种方式进行选择:一、按行排列,即保存完一行后再保存第二行,依次类推;
二、按列排列,即保存完第一列后在保存第二列,依次类推。
存储示意图:
C语言自学笔记(10)
按线性方式输出二维数组元素实例:
C语言自学笔记(10)
二维数组中地址
1)使用取地址运算符“&”,可获取数组名(如 score)、数组行名(如 score[i])、数组元素名(如 score[0][0])的地址。
2)对于数组名(如 score)、数组行名(如 score[i]),其标识符本身就代表其首地址。
3)对于二维数组的每一行,位于该行的第一个元素的地址也就是该行的首地址,位于第一行第一个元素的地址也是整个数组的首地址。
输出数组各元素的内存地址实例:
C语言自学笔记(10)

3、二维数组的初始化
1)按行列初始化
形式:类型名 数组名 [行长度] [列长度]={{第一行初始值},{第二行初始值},…,{第n行初始值}};
右侧使用大括号嵌套进行初始化,内层的每一个大括号表示二维数组中的一行数据。
内嵌大括号中最后一个数据不能添加逗号,逗号添加在两个大括号之间。
二维数组初始化部分元素多种情况:
C语言自学笔记(10)
2)按存储顺序赋初值
形式:类型名 数组名 [行长度] [列长度]={初值表};

C语言自学笔记(10)