deleted

  • Autore discussione Autore discussione Utente cancellato 129487
  • Data d'inizio Data d'inizio
Pubblicità
"\n" è una stringa letterale, allocata in RAM in celle read-only. Quando tu esegui cout << e + "\n" stai visualizzando il contenuto presente all'indirizzo della stringa + 138.
Il compilatore non ti permetterà di scrivervi, infatti:
Codice:
  *(e + "\n") = 10;
  e["\n"] = 20;
Codice:
In function ‘int main()’:
error: assignment of read-only location ‘*(((const char*)"\012") + ((sizetype)e))’
   *(e + "\n") = 10;
               ^
error: assignment of read-only location ‘"\012"[((int)e)]’
   e["\n"] = 20;
           ^
 
Ultima modifica:
grazie mille,solo che non ho capito bene una cosa,se con questa istruzione visualizzo cosa c'è all'interno dell'indirizzo di RAM datomi dalla somma tra quello di "\n"+138 allora perchè capita questo?:

se scrivo questo codice:

Codice:
int main()
{
char e=138;
cout<<"questo programma "<<e<<" stato scritto in C++\n";
cout<<"questo programma è stato scritto in C++\n";  //Da notare che è non viene visualizzato poichè nel CODICE ASCII non è presente la sua codifica
cout<<"è\t"<<e<<endl;
cout<<e+"\n"<<endl;
system ("PAUSE");
return 0;
}

in uscita ho questa schermata:
Visualizza allegato 103710

Altrimenti se eseguo quest'altro codice:

Codice:
int main()
{
char e=138;
cout<<e+"\n"<<endl;
system ("PAUSE");
return 0;
}

in uscita ho:
Visualizza allegato 103709

Quindi come è possibile questo?,e come se i cout chiamati prima influenzassero il contenuto dell'indirizzo di memoria dato dalla somma "\n"+138.......:grat:
Non ho sinceramente capito cosa tu intenda...
 
Quindi adesso,la mia domanda è:
com'è possibile che eseguendo il primo codice ho come risultato il contenuto dell'indirizzo di memoria,mentre eseguendo il secondo ho semplicemente l'esecuzione di "\n"??
Come ti ho detto la stringa è allocata da qualche parte in memoria, a discrezione del SO. Il suo indirizzo non è costante. Al suo variare, chiaramente, cambia anche l'indirizzo risultante da quello spiazzamento.
 
Pubblicità
Pubblicità
Indietro
Top