Salve a tutti, questo è il mio primo post.
Avrei un piccolo problema con gli array (vettori) nel C++.
Dunque ora cerco di spiegare bene con un esempio perchè così si capisce meglio.
Questo codice mi viene compilato ed eseguito correttamente. (Correggetemi se sbaglio).codice:#include <iostream> using namespace std; int main () { const int dim = 4; int misure[dim]; int muse[5] = {4, 6, 3, 7, 8}; misure[0]= 45; misure[1]= 37; misure[2]= 29; misure[3]= 56; * cout << misure[2] << endl; cout << muse[3] << endl; ** } return 0; }
SE invece aggiungo nel codice questa porzione di codice:
*misure[7]= 35;
**cout << misure[7] << endl;
Il programma (DEV C++) mi compila correttamente il codice e me lo esegue anche correttamente!!! Cioè mi stampa a video il valore di "misure[7]" anche se nell'intestazione c'è scritto chiaramente che il vettore ha dimensione 4.
Lo stesso vale anche con il secondo vettore dichiarato. Per non creare confusione non aggiungo altro, ma se nel codice scrivessi lo stesso errore per il vettore muse, come per il vettore misure, il programma compila ed esegue.
Quindi:
Sapendo che a livello teorico quello che ho scritto con gli asterischi è un errore, mi preme sapere perchè viene compilato cmq il codice.
E' il programma che uso che ha dei limiti e permette questi erroracci, oppure c'è qualcosa sotto, tipo che si può fare una cosa del genere in C++?
2° domandina:
Da quello che so un array deve essere sempre definito con una costante. Anche se sia variabile (come nell'esempio sopra), si imposta a costante.
Perchè allora se compilo un programma con dimensione di array solamente definita come:
int dim;
int array[dim]
senza porre come costante la variabile dim, il programma mi si compila ed esegue lo stesso?
A mia vista si esegue correttamente. Perchè?
Sempre errore del compilatore?
Oppure è possibile che un array sia definito come ho scritto qualche riga sopra (cioè con variabile non costante)?
Ringrazio sentitamente chi riuscirà a chiarirmi questi dubbi amletici![]()
PS: spiegate anche le motivazioniGrazie!!!