01: // rivisitazione problema durata automatica VLA con malloc()
02: #include<stdio.h>
03: #include<stdlib.h>
04:
05: // nelle intenzioni, genero n lanci di un dado e restituisco il relativo valore
06: int *genera_array_lanci(int n)
07: {
08:
09: int *v = malloc(n * sizeof(int)); // era int v[n];
10:
11: for(int i=0; i<n; ++i)
12: v[i] = rand()%6 + 1;
13:
14: printf("DEBUG: restituisco indirizzo %p\n", v);
15: return v;
16: } // anche quando la funzione termina l'area allocata con malloc() rimane e non viene distrutta come nel caso dei VLA
17:
18: int main(int argc, char **argv){
19:
20: int n;
21:
22: printf("Quanti lanci di dado vuoi simulare? ");
23: scanf("%d", &n);
24:
25: int *lanci = genera_array_lanci(n);
26:
27: printf("DEBUG: la funzione ha restituito l'indirizzo %p\n", lanci);
28: printf("Hai ottenuto i seguenti valori: ");
29: for(int i=0; i<n; ++i)
30: printf(" %d", lanci[i]);
31:
32: free(lanci); // nei VLA non usabile...
33:
34: printf("\n");
35:
36: return 0;
37: }
38:
39:
Se avete commenti o osservazioni 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