Maledette funzioni!!

gpb01:

paolometeo2:
Per quanto riguarda i valori che una funzione restituisce al main, se ho capito bene, solo uno può ritornare con il nome della funzione, mentre negli argomenti non posso passare nient'altro. E' giusto? Altrimenti uso variabili globali.

In realtà il discorso è più complesso ... ad una funzione i parametri si possono passare "by value" o "by reference", e, nel secondo caso, la funzione può addirittura modificare il valore dei parametri ... ma ... credo di mettere "troppa carne al fuoco" ... :wink:
Guglielmo

Quotone.
Praticamente, devi usare i puntatori se vuoi poter modificare una variabile passata come parametro. Perciò occhio che con i puntatori è un attimo fare casino.
Se vuoi saperne di più, cerca su libri di C o su internet, il classico esempio dello swap (cambio) dei contenuti di due variabili passati ad una funzione.

In Swap1 lo scambio non avviene perchè in a e b ci sono le copie dei valori passati

int x=1,y=3;
swap1(x,y);      // contenuto delle variabili swap non funziona
Serial.print(x); Serial.print(" ");Serial.println(y);
swap2(&x,&y);    // indirizzo delle variabili
Serial.print(x); Serial.print(" ");Serial.println(y);
...
void swap1(int a,int b)
{ int tmp=a;
  a=b;
  b=tmp;            
}
void swap2(int *a,int *b)
{ int tmp=*a;
  *a=*b;
  *b=tmp;            
}