09-03 二维数组存储
1.概念
二维数组在概念上是二维的,即是说是其下标在两个方向上变化,下标变量在数组中的位置也处于一个平面之中,而不是像一维数组只是一个向量。但是,实际的硬件存储器确实连续编址的。也就是说存储器单元式按一维现行排列的。如何在一维存储器中存放二维数组,有两种放啊是:一种是按行排列,即放完一行之后顺次放入第二行;另一种是按列排列,即放完一列之后再数次放第二列。
2.列数 = 行的总字节数 / 给个元素占用的字节数
行数 = 总字节数 / 每一行占用的字节数
- int a[][4] = {{1,2,3,5},{4,5,6,5},{7,8,9,5}};
-
- //行数 = 总字节数/每行占用字节数
- int row = sizeof(a)/sizeof(a[0]);
- //列数 = 每行占用字节数/每个元素占用字节数
- int column = sizeof(a[0])/sizeof(int);
-
- printf("rows : %d\n", row);
- printf("column : %d\n", column);
复制代码
打印结果:
rows : 3
column : 4
3.求每门课的平均分
- //求平均成绩
- int scores[][3] = {{56,78,44},{56,89,43},{33,65,88},{33,66,22}};
- int total = 0;
- for (int j = 0; j < 3; j++) {
- for (int i = 0; i < 4; i++) {
- total += scores[i][0];
- }
- printf("class %d 's avg score: %.2f\n",j ,total/3.0);
- }
复制代码
4.二维数组作为函数参数注意事项
a.类型和长度要一致
b.二维数组作为形参,可以不写第一维长度
|
|