Questa è la ragione dello strano modo di utilizzare scanf; infatti essa è una funzione C predefinita parametrizzata su delle variabili, e quindi i parametri attuali delle sue chiamate devono essere dei puntatori.
#include <stdio.h> void SWAP(int * x, int * y) { int aux; aux = *x; /* contenuto del contenuto di x in aux */ *x = *y; /* contenuto del contenuto di y in x */ *y = aux; /* contneuto di aux nel contenuto di y */ } main(){ int a = 5, b = 10; SWAP(&a, &b); /* i parametri attuali sono i puntantori (indirizzi) di a e b */ printf("i valori di a e b sono %d e %d \n",a,b); }