Variable qui définit un nom de variable

Bonjour,

Pas facile de décrire ce dont j’ai besoin. Je vais essayer d’être le plus clair :wink:

Je souhaite passer une variable a une fonction.
Mais au lieu de le mettre en toute lettre :affiche(var), je souhaiterai passer par un tableau liste[]={var1, var2}. pour pouvoir le parser dans une boucle for

bref, un nom de variable défini dans une variable !

  for i in (byte i = 0; i < 2 ; i++}
{
    affiche(liste[i]);
}

Malheureusement, cela ne fonctionne pas car j’ai un mismatch de type.

help ! Une idée de comment faire, si toutefois c’est possible ?

le code complet :

void affiche(const byte mot[])
{
  for (int i = 1; i < mot[0] + 1; i++)
  {
    matrice_leds[mot[i]] = CRGB::PapayaWhip;
  }
}

loop
{
const byte une[4] = {3, 70, 69, 68};
const byte deux[4] = {3, 40, 49, 78};

byte liste[]={une, deux}
for i in (byte i = 0; i < 2 ; i++}
{
    affiche(liste[i]);
}

ca doit pas etre possible ... :-( je vais faire autrement ;-(

Je ne suis pas un spécialiste des pointeurs, mais je pense que la solution se trouve là : les pointeurs.

Tu crées un tableau de pointeurs qui contient les adresses de tes variables et tu lis les données qui se trouvent à chaque adresse. Par contre, je pense que ça ne marchera que si toutes tes variables sont de même type : exemple, toutes des int.

Sinon, si c'est composite, il doit falloir passer par une structure de pointeurs, mais ça dépasse mes faibles connaissances en la matière

Tu peux essayer ça : ça compile correctement, mais je ne sais pas si ça fonctionne…

void setup() {
  int une[] = {3, 70, 69, 68};
  int deux[] = {3, 40, 49, 78};
  int *liste[] = {une, deux};
  for (int i = 0; i < 2; i++)
    for (int j = 0; j < 4; j++)
      Serial.println(*(liste[i] + j));
}

void loop() { }

Salut , un tableau a double entree ne ferait pas l ’ affaire ?

void setup() {
 // put your setup code here, to run once:
 int une[] = {3, 70, 69, 68};
 int deux[] = {3, 40, 49, 78};

 char liste [2][4] = {une, deux};
 
 for (byte i = 0; i < 2; i++) {
   for (int j = 0; j < 4; j++) {
     Serial.println(liste[i][j]);
   }
 }
}

void loop() {
 // put your main code here, to run repeatedly:

}