![]() |
![]() |
![]() |
![]() |
![]() |
|
Actually, when you declare an array parameter, you do not need to supply dimension information for the first dimension:
*-- First dimension's size omitted
v
double mean_djia (double array[ ][100], day) {
return 0.5 * (array[0][day] + array[1][day]);
}
To see why you can omit the first dimension's size, you need to know that the objects stored in two-dimensional arrays are placed sequentially in memory. In C, the storage is by rows:
*-- [0, 0] *-- [0, 99] *-- [2, 0]
| | |
v v v
*---*---*---*-- ---*---*---*---*---*-- ---*---*---*---*---*---*--
| | | | | | | | | | | | | | |
*---*---*---*--- --*---*---*---*---*--- --*---*---*---*---*---*---
^ ^
*-- [1, 0] *-- [1, 99]
You do not need to indicate the number of rows in the array-parameter declaration, because the C compiler needs to know only how many columns are stored in the array for each row to find the place in memory corresponding to any index pair.