VARIABILI COME PARAMETRI DI FUNZIONE

Poichè nel linguaggio C tutti i parametri delle funzioni (e quindi anche delle procedure) sono valori, l'unico modo per ottenere funzioni con parametri variabile è di utilizzare i tipi puntatori.
Per definire che una funzione è parametrizzata su una variabile X di tipo T, è sufficiente dichiare che ha un parametro X1 di tipo puntatore a T. Se il corrispondente parametro attuale è la variabile Y, basterà passare invece l'indirizzo di (il puntatore a) Y, scritto &Y.

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.


ESEMPIO
Procedura per scambiare il contenuto di due variabili
#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);

}

ESERCIZIO
  1. Scrivere una procedura per leggere un intero, tale intero deve essere ritornato come contenuto di una variabile passata come parametro.