Two dimensional arrays logically consist of rows and columns. For example, an array with 3 rows and 4 columns:
1 2 3 4 5 6 7 8 9 10 11 12
A C++ two dimensional int array with 3 rows and 4 columns can be declared like this:
int a[3][4]; or with initialization int a[][4] = { {1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12} };
What is the scale factor for computing a + 1? That is what address is represented by a + 1?
Hint: In memory a two dimensional array is stored one row after another. So the 3 rows of a are stored as shown below. So a + 1 should be the address of the first element of the second row, namely the 5, which is 4 integers (or 16 bytes) from 1.
Each row has 4 integers and so the size of each row in bytes is 16.
1 2 3 4 5 6 7 8 9 10 11 12