As the memory itself is pretty much a one-diemensional array (as it has one index) there is of course no way to create a 'native' two-diemensional array. The CPU only knows adresses in the memory and doenst care about higher data-structures - its the compilers task to make sure that the resulting assembler-code adresses the memory like the programmer intented. So the only reason for these sturctures to exist is indeed their convenience for programmer in higher-languages.

The pointer (aka indirect adressing-modes) on the other hand is one of the most native concepts of a CPU. The compiled assembler-code uses it for nearly every memory- or function-call made by a higher language.
And a pointer only directs to annother memore-location - and if that location directs to the next, and to the next...and so on - you can also use '******' (and the compiled code maybe really does [see Binding]) to direct to an two-diemensional array. The pointers just lead you the way - whats on the end of it doesnt matter.

Last edited by FlorianP; 07/15/10 22:06.

I <3 LINQ