Tu déclares x en variable globale : pas besoin de la passer en argument, elle est connue de toutes tes fonctions (setup, loop et les autres). Si tu veux utiliser des variables locales, par exemple locales à la loop, et les utiliser et les modifier dans une fonction, il faut les passer en argument et en pointeur.
Exemple :
void test(int *pj) /* test attend l'adresse d'un entier... */
{
*pj=2; /* ... pour le modifier. */
return;
}
int main(void)
{
int i=3;
test(&i); /* On passe l'adresse de i en paramètre. */
/* Ici, i vaut 2. */
return 0;
}
Trouvé ici.
Voir aussi (même lien) :
Exemple - Passage de paramètre par référence en C++
void test(int &i) // i est une référence du paramètre.
{
i = 2; // Modifie le paramètre passé en référence.
return;
}
int main(void)
{
int i=3;
test(i);
// Après l'appel de test, i vaut 2.
// L'opérateur & n'est pas nécessaire pour appeler
// test.
return 0;
}
C'est ce que j'utilise les rares fois où je ne veux pas utiliser des variables globales.