Ciao a tutti,
mi sto (ri)avvicinando al C e sono un po' arruginito.
Voglio determinare la lunghezza di un array di interi. Tutto bene usando sizeof(array).
con array definito staticamente. Se definisco invece un puntatore all'array come fatto nel codice riportato, la dimensione che mi viene restituita e' quella del puntatore.
codice:
#include <stdio.h>
main() {
int dim,i,val;
int *a;
printf("quanti elementi nell'array?\n");
scanf("%d", &dim);
int testArray[dim];
for(i=0; i<dim; i++) {
printf("Elemento %d:", i);
scanf("%d",&val);
testArray[i] = val;
}
a=testArray;
printf("Misura array a (pointer): %d\n", sizeof(a)/sizeof(int));
printf("Misura array arrayTest (statico): %d\n", sizeof(testArray)/sizeof(int));
printf("%d %d %d\n", testArray, a, &testArray[0]);
}
Ma nome dell'array e puntatore all'indirizzo [0] sono la stessa cosa?
Come faccio a determinare la lunghezza della array tramite il puntaore al primo elemento, il che ad esempio puo' succedere con l'allocazione dinamica di memoria?
Grazie