Scopriamo in che modo possiamo passare i parametri ad una funzione.
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.
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.