01: // allocazione dinamica array bidimensionali usando puntatori a puntatori
02: #include<stdio.h>
03: #include<stdlib.h>
04:
05: int main(int argc, char **argv){
06:
07: // posso vedere una matrice come un insieme di righe
08: // una singola riga di una matrice la posso gestire con un array
09: // tante righe diventano un array di array
10:
11:
12: // leggo dimensioni da usare
13: int nrows, ncols;
14: printf("Inserisci le dimensioni della matrice che vuoi gestire: ");
15: scanf("%d%d", &nrows, &ncols);
16:
17: int **matrix; // un puntatore di puntatori permette di gestire un array di array
18:
19: // Passo 1: alloco matrix, in pratica un singolo array di puntatori a int
20: matrix = malloc(nrows*sizeof(int *));
21: // Passo 2: dopo questa riga, ammesso che la malloc() abbia fatto il suo dovere, l'elemento i-esimo matrix[i] è un puntatore ad int
22: // li devo inizializzare tutti facendoli puntare a opportuna riga
23: for(int i = 0; i < nrows; ++i)
24: matrix[i] = malloc(ncols*sizeof(int));
25:
26:
27: // allocazione finita, adesso posso usarla come un semplice array bidimensionale
28:
29: // esempio di scrittura (inizializzo con numeri casuali tra 0 e 99)
30: for(int r = 0; r < nrows; ++r)
31: for(int c = 0; c < ncols; ++c)
32: matrix[r][c] = rand()%100;
33:
34: // esempio di lettura (stampa)
35: for(int r = 0; r < nrows; ++r)
36: {
37: for(int c = 0; c < ncols; ++c)
38: printf("%2d ", matrix[r][c]);
39: printf("\n");
40: }
41:
42: return 0;
43: }
44:
45:
Se avete commenti o osservaƶioni su questa pagina
mandate un messaggio di posta elettronica a bertoƶƶi@ce.unipr.it
mandate un messaggio di posta elettronica a bertoƶƶi@ce.unipr.it