C++ ordinamento stringhe

zio_mangrovia
Mi aiutate a capire questo concetto a me ancora oscuro?

     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
apatriarca
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.

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.