Dietro le quinte, "25"
è una matrice di tre caratteri: due che rappresentano '2'
e '5'
e un terminatore con il valore zero per contrassegnare la fine.
Una matrice è una creatura un po 'strana, con la tendenza a cambiare in un puntatore (al primo elemento) se si fa qualcosa con esso. Ecco cosa sta succedendo qui: l'aggiunta di uno a un array non ha senso, quindi si trasforma in un puntatore. Aggiungendone uno si ottiene un puntatore al secondo carattere.
Quando viene assegnato un puntatore a un carattere, <<
presuppone che punti a una stringa terminata e continua a stampare caratteri finché non trova un terminatore (o esplode in qualche modo, se non ce n'è uno). Quindi dargli un puntatore al secondo carattere di una stringa stamperà tutti i personaggi dal secondo in poi, come hai osservato.
Se sei nuovo di C e C++, dovresti prima decidere quale lingua imparare, poiché sono molto diversi. Se scegli il C++, dovresti familiarizzare con la sua libreria amichevole di alto livello (come ad esempio std::string
per gestire le stringhe senza questo tipo di stranezze) prima di immergerti nella follia di basso livello di array e puntatori.
fonte
2015-03-10 07:19:45
Cosa ti aspetti che succeda quando fai "25" +1? – jsantander
E '" ciao "+ 1' è' "ciao" ', stai ancora individuando un modello? – molbdnilo
Se si aggiunge la patata alla banana, con quante frobnitz ci si ritrova? – Shadur