[C] Dubbio dichiarazione Stringa

Messaggioda luca66 » 05/02/2019, 17:30

Buonasera ragazzi, volevo esporvi un mio dubbio.

Date le seguenti dichiarazioni:

Codice:
char *s="a";
char v[]="a";


Non riesco a capire il perché la seguente stringa di codice funzioni perfettamente v[0]='K'
quindi data v[]={'a','\0'} lo faccio diventare v[]={'K','\0'}
mentre se prendo il puntatore s alla stringa {'a','\0'} e scrivo s[0]='K' mi da errore in fase di esecuzione.
Ovviamente 'K' è un carattere generico. Il professore ha giustificando ciò dicedo che:

char *s="a"; genera un puntatore ad una "stringa costante". Che significa stringa costante ? In memoria non dovrebbe essere rappresentato come un vettore del tipo {'a','\0'} dove s punta alla "testa" di questo vettore?

Vi ringrazio in anticipo!!
Meravigliato dal tutto
Avatar utente
luca66
Junior Member
Junior Member
 
Messaggio: 94 di 200
Iscritto il: 05/12/2017, 23:35

Re: [C] Dubbio dichiarazione Stringa

Messaggioda Surimi » 05/02/2019, 17:49

Surimi
Starting Member
Starting Member
 
Messaggio: 2 di 10
Iscritto il: 30/12/2018, 13:10

Re: [C] Dubbio dichiarazione Stringa

Messaggioda vict85 » 05/02/2019, 18:23

Le stringhe costanti e in generale le costanti sono salvate spesso in una specifica parte dell'eseguibile e quindi non sono davvero allocate durante l'esecuzione del codice. Insomma, quello è di fatto un puntatore ad una parte protetta della memoria a cui il programma non ha potere di scrittura.

Nel secondo caso la stringa costante viene copiata nella stringa non costante.
vict85
Moderatore
Moderatore
 
Messaggio: 9483 di 19253
Iscritto il: 16/01/2008, 00:13
Località: Berlin

Re: [C] Dubbio dichiarazione Stringa

Messaggioda luca66 » 05/02/2019, 18:39

Ok perfetto risposta molto chiara. Quindi diciamo è un dettaglio tecnico del compilatore che associa una scrittura ad un area protetta della memoria mentre l'altra no, niente di più giusto?
Meravigliato dal tutto
Avatar utente
luca66
Junior Member
Junior Member
 
Messaggio: 95 di 200
Iscritto il: 05/12/2017, 23:35

Re: [C] Dubbio dichiarazione Stringa

Messaggioda luca66 » 05/02/2019, 19:05

Surimi ha scritto:https://stackoverflow.com/questions/3207286/c-strings-pointer-vs-arrays

Grazie anche per questo post molto chiaro!

Buonaserata ragazzi!
Meravigliato dal tutto
Avatar utente
luca66
Junior Member
Junior Member
 
Messaggio: 96 di 200
Iscritto il: 05/12/2017, 23:35


Torna a Informatica

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite