In C (e C++) tutti i parametri "normali" sono passati per copia, mentre i vettori sono passati per riferimento - o meglio, quando tu scrivi:
codice:
void test(int vet[],int var);
il compilatore in realtà capisce
codice:
void test(int *vet,int var);
Ovvero, passando un vettore passi (per copia) un puntatore al suo primo elemento, e di conseguenza le modifiche fatte al contenuto del vettore risultano visibili da fuori (perché non stai lavorando su una copia, ma sul vettore stesso).