Originariamente inviato da Hard*RTOS
Fermo restando i concetti espressi da MItaly, occorre specificare che nel linguaggio C gli array bidimensionali non esistono, e vengono gestiti - sia quando allocati dinamicamente che staticamente - come array di puntatori ad array e quindi come array di puntatori a puntatori.
None. In C gli array multidimensionali esistono, e sono un concetto ben distinto dagli array di puntatori. Giusto per dire una differenza fondamentale, lo standard garantisce che gli elementi di un array multidimensionale siano memorizzati in maniera contigua, motivo per cui su un array bidimensionale si può iterare tranquillamente come se fosse un array monodimensionale, cosa che non si può fare con un jagged array. Inoltre, se gli array multidimensionali fossero dei jagged arrays sarebbe possibile convertirli in puntatori multipli, cosa che non è invece possibile fare.
Qui la questione è spiegata bene (si parla di C++, ma per quanto riguarda gli array concetti sono fondamentalmente gli stessi).