Un array in C lo passi normalmente come se fosse un altra variabile.
codice:
#include <stdio.h>
void funzione (int [], int);
int main (void) {
int i;
int vettore[4] = {1, 2, 3, 4};
funzione (vettore, 4);
for (i = 0; i < 4; i++)
printf ("%d", vettore[i]);
return (0);
}
void funzione (int array[], int n) {
int i;
for (i = 0; i < n; i++)
array[i] = array[i] + 1;
}
In pratica l'array lo puoi passare solo per riferimento, infatti come parametro devi passargli l'indirizzo di questo e da quanti elementi è formato.
La funzione scritta sopra può essere tranquillamente scritta anche in questo modo:
codice:
void funzione (int *, int);
...
void funzione (int *array, int n) {
int i;
for (i = 0; i < n; i++)
*(array + i) = *(array + i) + 1;
}
Che come vedi, aggiunge 1 ad ogni elemento del array di interi.
In pratica quando chiami la funzione, nel area di memoria dello stack ci vanno a finire la variabile n e la variabile i, che una volta terminata la funzione (all'ipotetico return che nn c'è perchè è void), vengono cancellate.
L'array invece è passato per riferimento, cioè la funzione và direttamente nell'area di memoria dove si trova questa sequenza di interi (1,2,3,4) cioè il nostro array, e ne modifica il valore di ognuno.
Quindi tornando al main, il vettore vettore è modificato, perchè corrisponde al vettore array della funzione.
Un array può essere anche chiamato vettore, non farti impressionare dai nomi.
Ciao :gren: