codice:
  int a;
   int b[a];
   b[0]=1;
   b[1]=2;
   b[2]=3;
è giusto che funzioni, ma il problema è quando cerchi di assegnare un valore a

b[x] quando x è un valore > di a al momento della creazione di b[a]

potresti ottenere un errore di memoria se vai a scrivere su cose che non sono tue, o, ancora peggio, potresti andare a cambiare il valore di alcune altre variabili all'interno del tuo programma