Quote:
Originariamente inviato da mister bianchi
Ciao a tutti,
sto imparando le basi del C, ho fatto questo piccolo programmino per imparare gli array.
Codice:
#include<stdio.h>
int main()
{
int intero[5], i;
for (i=0; i<10; i++)
{
intero[i]=i;
}
for (i=0; i<10; i++)
{
printf("intero[i]: %d\n", intero[i]);
}
return 0;
}
Come mai anche se ho dichiarato l'array con dimensione 5 riesco comunque a scrivere oltre questa dimensione? Non dovrei ottenere un errore?
|
Non c'è modo di sapere che è sbagliato prima di eseguire il codice. Come fa il compilatore a sapere che i sarà maggiore di 5 ? Deve interpretare il significato del comando for e delle eventuali formule. Infatti nel mezzo ci potrebbe essere scritto
anche questa formula dovrebbe essere valutata. In altre parole il codice dovrebbe essere eseguito.
Ma quando lo esegui non sai cosa c'è al di là della quinta locazione di memoria, magari c'è qualcosa che in quel frangente non serve più, per cui anche sovrascrivendola non si hanno errori.
Però non c'è garanzia.
Diverso è se scrivi i[7]=2; allora il compilatore sa che l'array è al massimo di 5 ma tu stai scrivendo nella 7ma locazione