01: // equivalenza array e puntatori
02: #include<stdio.h>
03: #include<stdlib.h>
04: 
05: 
06: int main(int argc, char **argv){
07: 
08:   int a[]={23, 45, 2, 4, 9, 34, 34, 23, 90, 17, 18, 19};
09:   int *pa;
10: 
11: 
12:   printf("Il mio array a[] si trova in memoria all'indirizzo %p\n", a);     // indirizzo di memoria array lo ottengo usando il nome dell'array SENZA []
13:   printf("Il mio array a[] si trova in memoria all'indirizzo %p\n", &a[0]); // l'indirizzo del primo elemento e' comunque l'indirizzo dell'array
14: 
15:   pa = a;   // memorizzo nel puntatore l'indirizzo dell'array (equivalente a pa=&a[0])
16: 
17:   printf("Il primo elemento dell'array contiene %d\n", *pa);                               // int che trovo a quell'indirizzo
18: 
19:   printf("Il primo e il secondo elemento dell'array contengono %d e %d\n", pa[0], pa[1]);  // anche per i puntatori posso usare le []
20:   printf("Il primo elemento dell'array contiene %d\n", *a);                                // vale anche il viceversa!
21:   
22:   printf("sizeof(array)     restituisce %ld\n", sizeof(a));    // sizeof() si comporta pero' diversamente
23:   printf("sizeof(puntatore) restituisce %ld\n", sizeof(pa));
24: 
25:   return 0;
26: }
27: 
28: /* 
29:    ESECUZIONE
30: 
31: Il mio array a[] si trova in memoria all'indirizzo 0x7fff35820770
32: Il mio array a[] si trova in memoria all'indirizzo 0x7fff35820770
33: Il primo elemento dell'array contiene 23
34: Il primo e il secondo elemento dell'array contengono 23 e 45
35: Il primo elemento dell'array contiene 23
36: sizeof(array)     restituisce 48
37: sizeof(puntatore) restituisce 8
38: 
39: */
40: 


Se avete commenti o osservaƶioni su questa pagina
mandate un messaggio di posta elettronica a bertoƶƶi@ce.unipr.it