2000 – 14

Siano dichiarate tre variabili intere a, b, c, ed un puntatore p con le dichiarazioni

int a, b, c;
int *p;

Cosa succede all’esecuzione del seguente codice:

for(i=0, p=&a; i < 3; p++)
    *p=-1;
  1. a, b, c vengono inizializzate al valore -1;
  2. il valore -1 viene assegnato certamente ad a, e chissà a quale altra variabile in memoria, con risultati imprevedibili;
  3. il compilatore segnala un errore (quale?);
  4. l'esecuzione viene abortita per un errore run-time.

Soluzione b (il valore -1 viene assegnato certamente ad a, e chissà a quale altra variabile in memoria, con risultati imprevedibili;)


*p contiene inizialmente l'indirizzo di a ma poi si aggiorna e non è certo che punti correttamente a b e a c.