Cercavo un modo veloce e ottimizzato per creare Array bidimensionali in C, quando parlandone in chat su irc, Scinziatu mi illumina dicendo: {{{ 14:50:12 @scinziatu | void f(int x) { 14:50:13 @scinziatu | int array[x][x]; 14:50:14 @scinziatu | } 14:50:17 @scinziatu | compila }}} Dopo questo cercando scopriamo che dal C99 in poi supporta gli array dinamici, allora incuriosito provo le potenzialita': {{{ #!C #include typedef struct { int x; int y; } msize_t; static msize_t size; /** Dichiaro una funzione che ha come parametro un'array bidimensionale * la cui dimensione dipende da size */ void funzione(int matrice[size.x][size.y]) { int a = matrice[5][2]; printf( "%d\n", a); } int main() { size.x = 10; size.y = 10; int m1[size.x][size.y]; m1[5][2] = 10; // Mi spetto che stampi 10 funzione(m1); size.x = 6; size.y = 5; // Cambiando size mi aspetto Che mi stampi un valore diverso da 10. funzione(m1); } }}} Infatti lanciando il codice: {{{ $ ./prova 10 32707 }}} Per chi e' abituato a linguaggi ad altro livello puo' sembrare una sciocchezza da nulla e anche un modo molto rozzo per gestire gli array dinamici, ma e' molto comodo se si deve sviluppare in C, considerando che prima di C99 bisognava fare cosi: {{{ #!C // Allocare i puntatori alle righe array = malloc( sizeof(int*) * size.x ); // Allocare per ogni riga gli elementi delle colonne for(i=0; i