C++ ordinamento stringhe
Mi aiutate a capire questo concetto a me ancora oscuro?
v e v[j] sono delle stringhe, quindi array di char.
Dove fraintendo?
aux è definito come un puntatore a caratteri e punta alla stessa zona di memoria di v , è corretto?
Se non capisco male le zone di memoria sono sempre le stesse ma si invertono i loro puntatori.
if ( strcmp(v[j], v[i]) < 0 ){ char *aux = v[i]; v[i] = v[j]; v[j] = aux; }
v e v[j] sono delle stringhe, quindi array di char.
Dove fraintendo?
aux è definito come un puntatore a caratteri e punta alla stessa zona di memoria di v , è corretto?
Se non capisco male le zone di memoria sono sempre le stesse ma si invertono i loro puntatori.
Risposte
v[ i ] e v[ j ] sono puntatori a char e non array di char. Il blocco di memoria a cui puntano viene scambiato, ma le stringhe in memoria rimangono invariate. Se ci fosse cioè un altro puntatore ad una di queste stringhe, stampando la stringa si otterrebbe sempre lo stesso valore anche dopo aver eseguito quel codice.