Originariamente inviato da eagle_fly
questo succede perchè quando crei un vettore il compilatore si occupa lui dell'allocazione di tutti i suoi elementi nello stack, perciò anche se te immetti effettivamente un valore in una sola cella le altre sono comunque inizializzate con un valore qualsiasi, che sarà molto raramente 0, e comunque vi sarà sempre un valore, questo per la natura della memoria ram, e che dovrebbe dipendere anche dal compilatore.
Ora, anche se te usi l'aritmetica dei puntatori è la medesima cosa, in quanto nella tua memoria la struttura dell'array c'è quindi accedi tranquillamente via via dalla prima all'ultima cella del vettore!!
nome_vettore | -1211313 |
nome_vettore + 1 | -1211313 |
nome_vettore + 2 | -1211313 |
nome_vettore + 3 | -1211313 |
nome_vettore + 4 | -1211313 |
nome_vettore + 5 | -1211313 |
nome_vettore + 6 | -1211313 |
nome_vettore + 7 | 15 |
la struttura della tua memoria a grandi linee (tenendo conto che ogni elemento del vettore occupa 4 celle di memoria o 2 in base che sia di tipo int o short, o altre dipendentemente dal tipo di dato) e come quella sopra con tutti i valori inizializzati con un valore random, ma comunque effettivamente presenti nella memoria. Il fatto che il compilatore crei questa struttura è legato all'uso che si fa della ram. Spero di aver chiarito un pò i tuoi dubbi ma soprattutto di essere stato corretto!!!
CIAO