Passare a una funzione un nome variabile di array

Ciao a tutti.
Ho un problema e, dopo aver passato al setaccio google e fatto milioni di prove, non ne sono uscito.

Ho dieci array che contengono dai 16 ai 50 valori l’uno, ognuno di 1 byte (uint8_t).

uint8_t izer[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, <...> , 48, 49};
uint8_t iuno[] = {0, 1, 2, 3, 4, 5, 6, 7,  28, 29, <...> , 34, 35};
uint8_t idue[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, <...> , 48, 49};
                   .
                   .
                   .
uint8_t iott[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, <...> , 48, 49};
uint8_t inov[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, <...> , 41, 42};

Ora, ognuno di questi array deve essere passato alla stessa funzione:

void loop() {
  myFunction(inov, sizeof(inov));
  myFunction(iott, sizeof(iott));
  myFunction(iset, sizeof(iset));
                   .
                   .
                   .
  myFunction(iuno, sizeof(iuno));
  myFunction(izer, sizeof(izer));
}

void myFunction(uint8_t myArray[], int arraySz) {
  for (int i = 0; i < arraySz; i++) {                // ligths every pixel in the array
    Serial.println(myArrayNum[i]);
  }
}

Ora, sarebbe decisamente più carino se potessi mettere tutto in un loop.
Avere un array di 10 elementi, tipo così:

int arraysInd[10] = {*izer, *iuno, *idue, *itre, *iqua, *icin, *isei, *iset, *iott, *inov};

e avere un loop da 9 a 0:

for ( int j = 9; j >= 0; j--) {
  myFunction(arrayInd[j], sizeof(arrayInd[j]));
}

La definizione dell’array e il loop sopra è stato messo un po’ a caso, era solo per rendere l’idea di cosa vorrei fare.

Qualcuno può aiutarmi?
Grazie mille.
Giuseppe

Buongiorno, essendo il tuo primo post, nel rispetto del regolamento della sezione Italiana del forum (… punto 13, primo capoverso), ti chiedo cortesemente di presentarti IN QUESTO THREAD ([u]spiegando bene quali conoscenze hai di elettronica e di programmazione[/u] ... possibilmente [u]evitando[/u] di scrivere solo una riga di saluto) e di leggere con molta attenzione tutto il su citato REGOLAMENTO ... Grazie. :)

Guglielmo

P.S.: Ti ricordo che, purtroppo, fino a quando non sarà fatta la presentazione nell’apposito thread, nessuno ti potrà rispondere, quindi ti consiglio di farla al più presto. ;)

Fatto!
Giuseppe

geppox: Avere un array di 10 elementi, tipo così:

int arraysInd[10] = {*izer, *iuno, *idue, *itre, *iqua, *icin, *isei, *iset, *iott, *inov};

I nomi degli array sono già dei puntatori impliciti, basta fare un array di puntatori al tipo dati degli array:

uint8_t* arraysInd[] = {izer, iuno, idue, itre, iqua, icin, isei, iset, iott, inov};

e avere un loop da 9 a 0:

for ( int j = 9; j >= 0; j--) {
  myFunction(arraysInd[j], sizeof(arraysInd[j]));
}

Qui il problema è la sizeof, che a quanto vedo funziona solo sui tipi dati definiti esplicitamente (attendo conferme/smentite). Mi sembra si possa risolvere con un array di dimensioni:

uint8_t arraysDim[] = {sizeof(izer), sizeof(iuno), sizeof(idue) ...};
for ( int j = 9; j >= 0; j--) {
  myFunction(arraysInd[j], arraysDim[j]));

Grazie mille! Funziona perfettamente, anche mettendo un array dei size non è un problema! Claudio_FF sei stato gentilissimo! Buona settimana. Giuseppe