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 una funzione parametrizzata su una variabile X di tipo T, è sufficiente dichiarare 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.
Chiaramente nel corpo della funzione occorrerà utilizzare l'operatore contenuto (*) quanfo si vorrà accedere al contenuto della variabile passata come parametro.

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 della variabile puntata da x in aux */    
    *x = *y; /* contenuto della variabile puntata da y in quella puntata da x */    
    *y = aux; /* contenuto di aux nella variabile puntata da 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.
  2. Scrivere una procedura per assegnare ad una variabile il minimo tra i valori di due altre variabili.