Tu non gli passi l'indirizzo di un array, ovvero di uno spazio di memoria allocato, gli passi un valore
casuale perché il puntatore è locale al main, ma anche se lo inizializzassi a NULL non otterresti niente.
O allochi memoria con malloc nel main(), e poi la funzione si limita a gestirlo come un array dinamico, o allochi memoria nella funzione e la restituisci al puntatore nel main().
codice:// Alloco memoria nella funzione e la restituisco al main con return #include <stdio.h> #include <stdlib.h> int* funzione(); int main() { int *v=NULL; v=funzione(); printf("%d", v[3]); getchar(); return 0; } int* funzione() { int i,n; int *vettore = (int*) malloc(5*sizeof(int)); for(i=0; i<5; i++) { vettore[i]=i; n = vettore[i]; } return vettore; } // alloco memoria nel main e gestisco come array #include <stdio.h> #include <stdlib.h> void funzione(int *); int main() { int *v=(int*) malloc(5*sizeof(int)); funzione(v); printf("%d", v[3]); getchar(); return 0; } void funzione(int *vettore) { int i,n; for(i=0; i<5; i++) { vettore[i]=i; n = vettore[i]; } }

Rispondi quotando