Sto cercando di capire perché il seguente codice è illegale:cambiando un carattere in una stringa di c
int main()
{
char *c = "hello";
c[3] = 'g'; // segmentation fault here
return 0;
}
Qual è il compilatore fa quando incontra char *c = "hello";
?
Il modo in cui lo capisco, è un array automatico di caratteri e c
è un puntatore al primo carattere. Se è così, c[3]
è come *(c + 3)
e dovrei essere in grado di effettuare l'assegnazione.
Solo cercando di capire come funziona il compilatore.
** le matrici non sono puntatori ** e ** i puntatori non sono matrici **. La stringa letterale ('" ciao "') è una matrice di 6 caratteri (conta il terminatore null). Leggi la sezione 6 del [comp.lang.c faq] (http://c-faq.com/). Una volta fatto, leggi anche le altre sezioni :) – pmg
Duplicato di troppi per elencare qui. –
Abbiamo bisogno di introdurre un filtro nel SO question code di domanda che rileva 'char * XX =" ... "' e fornisce la risposta lì e poi, in linea nella finestra di dialogo domanda posta. –