Allocazione spazio di una matrice non statica.



  • Buongiorno.
    Ho una matrice bidimensionale "int Matrice [] [10]" col primo indice che può variare da 0 a n, mentre il secondo indice è a valore fisso. La immagino come una sequenza di righi di un foglio di calcolo, ognuno con 10 celle disponibili. Se devo inserire il valore 1 in nel primo rigo, terza cella, scrivo Matrice [0] [2] = 1, se poi devo inserire 2 in un'altra cella scrivo Matrice [99] [4] = 2. Mi chiedo, ma ci pensa il C++ ad espandere la matrice fino a permettere l'utilizzo delle celle del centesimo rigo ? Io non devo fare niente ? E' tutto automatico ?



  • no, lo decidi tu.

    int Matrice[][10]; non compila, la prima dimensione puo' essere dedotta da C++ ma e' sempre fissa e l'intera memoria e' allocata al momento in cui crei la matrice e non cambia mai. non e' possibile ne espandere ne ridurre una la dimesione di una matrice allocata sullo stack



  • Quindi se io scrivo Matrice [15] [10] = 9 allocherà 15 righe di 10 colonne (tipo foglio di calcolo), quindi dopo non potrò assegnare al rigo 16 qualcosa perché la matrice è stata già allocata e non viene modificata. Ho capito bene ?



  • no, la matrice viene allocata alla dichiarazione, non alla assegnazione:

    int Matrice[100][10]; assegna una matrice 100x10. qui si determina la dimensione della matrice che e' costante.

    Matrice[15][9] = 9 assegna il valore 9 alla cella (16,10)



  • Perfetto. Grazie.


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.