二维数组的存储:按行存放int a[3][3];》二维数组中元素存放顺序:先在内存中存放第2000a[0][0]按行存放。一行元素,再存放第二行元素2004a[0][1]>例l:int a[3][3];int型-4个字节2008a[0][2]数组a的首地址是a,则:2012a[1][0]◆a[i[jl的地址是:a+(i*3+j)*sizeof(int)2016a[1][1]2020a[1][2]a「i的首地址每行3个元素2024a[2][0]是:a+i*3*4aooaoldo22028a[2][1]2032a[2][2]若a的首地址是2000a1oajla122012a[1]的首地址?12020a[1][2]的首地址?2a20a21a226
二维数组的存储:按行存放 6 Ø 二维数组中元素存放顺序:先在内存中存放第 一行元素,再存放第二行元素.-按行存放。 Ø例1:int a[3][3]; 数组a的首地址是 a,则: ua[i][j]的地址是:a+(i*3+j)*sizeof(int) int a[3][3]; 2000 a[0][0] 2004 a[0][1] 2008 a[0][2] 2012 a[1][0] 2016 a[1][1] 2020 a[1][2] 2024 a[2][0] 2028 a[2][1] 2032 a[2][2] int型- 4个字节 ua[i]的首地址 每行3个元素 是:a+i*3*4 若a的首地址是2000 ① a[1]的首地址? ② a[1][2]的首地址? 2020 2012
int a[2][3][4];a[0][0][0]扩展:多维数组的存储a[0][0][1]a[0][0]a[0][0][2]a[0][0][3]用和二维数组相同的角度看待多维数组a[0][1][0]a[0][1][1]例: int a[2][3][4]:a[0]a[0][1]a[0][1][2]a[0][1][3]int型三维数组a,有2*3*4=24个元素a[0][2][0]a[o]、a[1]是二维数组a[0][2][1]a[0][2]a[0][2][2]a[o][o]、a[o][1]是一维数组a[0][2][3]a[1][0][0]多维数组元素在内存中的排列顺序仍是按行a[1][0][1]a[1][0]a[1][0][2]存放::第一维的下标变化最慢,最右边的下标家a[1][0][3]a[1][1][0]变化最快。a[1][1][]a[1]a[1][1]a[1][1][2]a[1][1][3]a[1][2][0]a[1][2][1]a[1][2]a[1][2][2]a[1][2][3]
扩展:多维数组的存储 7/115 Ø 用和二维数组相同的角度看待多维数组 Ø 例:int a[2][3][4]; uint 型三维数组a,有2*3*4=24个元素 ua[0]、a[1]是二维数组 ua[0][0]、a[0][1]是一维数组 u多维数组元素在内存中的排列顺序仍是按行 存放:第一维的下标变化最慢,最右边的下标 变化最快。 int a[2][3][4]; a[0] a[0][0] a[0][0][0] a[0][0][1] a[0][0][2] a[0][0][3] a[0][1] a[0][1][0] a[0][1][1] a[0][1][2] a[0][1][3] a[0][2] a[0][2][0] a[0][2][1] a[0][2][2] a[0][2][3] a[1] a[1][0] a[1][0][0] a[1][0][1] a[1][0][2] a[1][0][3] a[1][1] a[1][1][0] a[1][1][1] a[1][1][2] a[1][1][3] a[1][2] a[1][2][0] a[1][2][1] a[1][2][2] a[1][2][3]
8.3.1二维数组的引用一变换下标数组名[行下标列下标例如:int a[2][3];可以引用元素:a[o][o]、a[o][1]、a[o][2]a[1][0]、a[1][1]、a[1][2]注意:下标必须是整型值。每个二维数组元素是一个变量,能参加它的类型规定的所有操作。例1:a[0][0]=100;scanf(%d",&aLllLlD)不能“越界引用数组”例2:a[2][3]=10;//错,最多可以用到a[1][2]8
8 例如:int a[2][3]; ① 可以引用元素:a[0][0]、a[0][1]、a[0][2]、 a[1][0]、a[1][1]、a[1][2] 注意:下标必须是整型值。 ② 每个二维数组元素是一个变量,能参加它的类型规定的所 有操作。 例1:a[0][0]=100; scanf( %d ,&a[1][1]); ③ 不能“越界引用数组” 例2:a[2][3]=10; //错,最多可以用到a[1][2]
【例8.14】成绩统计:有三门考试课,每门课有5人参加考试,成绩如下表。求各门课的平均成绩和每人的平均成绩。要求:用定义二维数组存放3个课程5个学生成绩并显示张三王五李四赵四周正课程平均?8064508576Math?c7565638777?9271407885Java?????每人平均???9
9 【例8.14】成绩统计: 有三门考试课,每门课有5人参加考 试,成绩如下表。求各门课的平均成绩和每人的平均成绩。 要求:用定义二维数组存放3个课程5个学生成绩并显示。 张三 王五 李四 赵四 周正 Math 80 64 50 85 76 C 75 65 63 87 77 Java 92 71 40 78 85 张三 王五 李四 赵四 周正 课程平均 Math 80 64 50 85 76 ? C 75 65 63 87 77 ? Java 92 71 40 78 85 ? 每人平均 ? ? ? ? ? ???