When creating a 2D array, how does one remember whether rows or columns are specified first?
All depends on your visualization of the array. Rows and Columns are properties of visualization (probably in your imagination) of the array, not the array itself.
It's exactly the same as asking is number "5" red or green?
I could draw it red, I could draw it greed right? Color is not an integral property of a number. In the same way representing 2D array as a grid of rows and columns is not necessary for existence of this array.
2D array has just first dimention and second dimention, everything related to visualizing those is purely your flavour.
When I have char array char[80][25]
, I may like to print it on console rotated so that I have 25 rows of 80 characters that fits the screen without scroll.
I'll try to provide viable example when representing 2D array as rows and columns doesn't make sense at all: Let's say I need an array of 1 000 000 000 integers. My machine has 8GB of RAM, so I have enough memory for this, but if you try executing var a = new int[1000000000]
, you'll most likely get OutOfMemory exception. That's because of memory fragmentation - there is no consecutive block of memory of this size. Instead you you can create 2D array 10 000 x 100 000 with your values. Logically it is 1D array, so you'd like to draw and imagine it as a single sequence of values, but due to technical implementation it is 2D.