Puntatori e stringhe

Prometto che questo è l'ultimo post sui puntatori.
Ricordate quando abbiamo detto che in C++ esistono due modi di gestire le stringhe? Con gli array di char e con il tipo string.
In realtà esiste un terzo metodo, i puntatori a char.
Vediamo molto brevemente di cosa si tratta, più per completezza che per altro:

char* pChar = "ganja";

La riga di codice superiore creerà un puntatore a char, e gli farà puntare un'area di memoria grande quanto i caratteri che compongono la stringa, dopodiché salverà gli stessi caratteri uno dopo l'altro in quest'area di memoria, a partire dall'indirizzo puntato da pChar.

Se consideriamo che ogni char occupa 1 byte di memoria (8 bit, una locazione), e che la mia stringa è formata da 5 caratteri, l'area di memoria allocata a cui punta pChar sarà di 1 * 5 = 5 a cui sommiamo un caratter in più, cioé il carattere null.
In definitiva la stringa "ganja\0" occuperà 6 locazioni a partire dalla locazione puntata da pChar.

Per verificare potete utilizzare l'operatore sizeof.
Una volta inizializzato, un puntatore a char può essere utilizzato un po' come si faceva con gli array di char.
Non mi dilungo oltre perché, sinceramente, credo che il nuovo tipo string introdotto dal C++ sostituisca egregiamente la gestione delle stringhe ereditata dal C.

1 commento:

Unknown ha detto...

Davvero molto utile ;)

Posta un commento