An array stores elements of one type in contiguous memory, giving O(1) indexed access but O(n) insertion and deletion in the middle.
1Address calculation
1D: address(A[i]) = base + i × size
Row-major 2D: base + (i × columns + j) × size
Column-major 2D: base + (j × rows + i) × size