Ciao a tutti! casualmente ho dovuto mettere mano a un codice in C, linguaggio che non uso regolarmente da una decina di anni. Ho trovato una cosa strana, che non capisco come possa funzionare, ho fatto un esempio per spiegarmi meglio
codice:
 #include  #include   void caricavettore(int[], int); void visualizza(int[], int); int main() {     int n = 5;     int v[n];     caricavettore(v,n);     visualizza(v,n); } void caricavettore(int v[], int n){     int i;     for(i = 0; i < n; i++){         printf("Inserisci elememto ");         scanf("%d",&v[i]);     } } void visualizza(int v[], int n){     int i;     for(i = 0; i < n; i++){         printf("%d \n",v[i]);     } }
Questo codice funziona, ma non capisco come mai. Sicuro che sto facendo una domanda stupida, ma in altri linguaggi questa logica non funzionerebbe,mi spiego: Le variabili che dichiaro in una funzione tra cui anche il main possono essere viste solo dalla funzione stessa e le altre funzioni non possono accedervi e meno che non passo come parametri. E se creo una cosa di questo tipo
codice:
 int main(){ 	int i = 1; 	a(); } int a(){ 	int i = 2; }
avrò due variabili "i" con valori diversi, l'assegnazione nella funzione a() non dovrebbe modificare l'omonima variabile nel main. Quindi, mi sta bene che caricavettore possa inserire elementi nell'array "v" che gli ho passato, ma non capisco come, senza un return, questo possa modificare la variabile "v" nel main. Sapete spiegarmi come mai? grazie