A two dimensional array can be accessed using two subscripts, with the first representing the row number and the second representing the column number. Elements are stored in memory row by row. A 2D array can be viewed as a collection of 1D arrays, with each row representing an array of the second dimension size. The base address of the 2D array points to the first element at index [0][0], and any element can be accessed using the generalized form of base_pointer[i][j].