Scopriamo in che modo possiamo passare i parametri ad una funzione.
Passaggio per valore
Se scriviamo un semplice programma con delle funzioni ci accorgeremo presto che le variabili passate come parametri non cambiano di valore al di fuori della funzione.
#include <stdio.h>
void aggiungiUno(int);
int main(){
int n = 100;
aggiungiUno( n );
printf("n: %d \n",n);
return 0;
}
void aggiungiUno(int x){
x = x + 1;
}
n: 100
Questo succede perché quando viene creato il record di attivazione della funzione aggiungiUno, il valore della variabile n viene copiato nel parametro x. Questo è chiamato passaggio per valore.
Passaggio per riferimento
Per modificare anche il valore di n possiamo utilizzare un puntatore.
#include <stdio.h>
void aggiungiUno(int*);
int main(){
int n = 100;
aggiungiUno( &n );
printf("n: %d \n",n);
return 0;
}
void aggiungiUno(int *x){
*x = *x + 1;
}
n: 101
Così facendo stiamo andando a modificare direttamente il valore di n. Questo viene chiamato passaggio per riferimento.