Apro questo nuovo post, attaccandomi a uno ancora in corso..

Che differenza c'è tra i due modi di creare una matrice?



Avendo un char** ovvero "un puntatore a puntatore a char" devi allocare la matrice in modo da avere una situazione di questo tipo:



Cioè un array principale che contiene N puntatori char*, ognuno dei quali punta ad un array di M char.

ma subito dopo le cose qua cambiano:

mi spiegate come il compilatore interpreta la dichiarazione:
codice:

int a[x][y]



se ho capito bene, significa:
crea un array di x elementi, i cui elementi sono a loro volta array di y elementi, che puntano a interi?
solo gli ultimi y elementi sono puntatori a int? gli altri x dovrebbero essere doppi puntatori, giusto?

No . Il compilatore semplicemente crea un array di x*y elementi .



Sono due modi differenti di creare delle matrici; personalmente preferisco il secondo, anche se il primo è più efficiente se ogni riga ha un numero di elementi differente (ad esempio nel caso di un vettore di stringhe).