Buongiorno a tutti,
sono nuovo del forum, quindi saluto tutti, e mi presento, sono autodidatta, mi piace la programmazione (tanto da farne un hobby) ho iniziato con il VB, sono passato al C, poi ora sono al C++.....
Sto leggendo il C++fondamenti di programmazione dei fratelli Deitel st� cercando di risolvere un esercizio(il 7.36) che recita scrivete una funzione ricorsiva che inverta una stringa.
L'esercizio l'ho risolto con il seguente listato. (� obbligo usare le stringhe come vettori)
codice:void reverse(char stringa[], int dimensione) {//gira la stringa al contrario if (dimensione == 0) { cout << endl; return; } cout << stringa[dimensione - 1]; reverse(stringa, dimensione - 1); return; }
funziona ma non mi piace, inizialmente avevo scritto questo:
codice:void reverse(char stringa[]) {//gira la stringa al contrario if (stringa[0] == '\0') { cout << endl; return; } int i = strlen(stringa); cout << stringa[i - 1]; stringa[i - 1] = '\0'; reverse(stringa); return; }
che pero' mi solleva un eccezione quando vado ad assegnare '\0' al posto dell'ultimo carattere.
sembra che la stringa non sia modificabile, ma e' un vettore e quindi non passato per valore,
cos'e' che non ho capito?
grazie.

Rispondi quotando