Passaggio di un array a una funzione.
A volte è necessario passare un array a una funzione, per passare l'intero array e non il suo singolo elemento. In questo caso, non puoi fare a meno dei puntatori. Nell'esempio seguente, la funzione sumFunction somma gli elementi dell'array che le viene passato. La funzione sa in anticipo quanti elementi ci sono nell'array, perché ho indicato esplicitamente il numero nel ciclo for con un numero.
int c;
int myArray[] = {1, 2, 3, 4, 5};
void setup()
{
Serial.begin(9600);
c = sumFunction(myArray);
Serial.println(c);
}
void loop()
{
}
int sumFunction(int *intArray)
{
int sum = 0;
for (byte i = 0; i < 5; i++)
{
sum += intArray[i];
}
return sum;
}
Cosa devi ricordare da questo: quando si descrive una funzione, il parametro array è indicato con un asterisco, ad es. tipo_dati* nome_array. Quando viene chiamato, l'array viene passato come nome_array. Come creare una funzione generica che somma un array di qualsiasi dimensione. L'operatore sizeof(), che restituisce la dimensione in byte, ci aiuterà in questo. Dovremo passare questa dimensione come argomento di funzione:
int c;
int myArray[] = {1, 2, 3, 4, 5, 6, 7, 8};
void setup()
{
Serial.begin(9600);
// passiamo l'array stesso e la sua dimensione in bytes
c = sumFunction(myArray, sizeof(myArray));
Serial.println(c);
}
void loop()
{
}
int sumFunction(int *intArray, int arrSize)
{
int sum = 0;
arrSize = arrSize / sizeof(int);
for (byte i = 0; i < arrSize; i++)
{
sum += intArray[i];
}
return sum;
}
E qui abbiamo una funzione che somma un array di tipo di dati int di qualsiasi lunghezza e restituisce il risultato.
Importante! L'array passato alla funzione non duplica l'array originale! Qualsiasi azione eseguita sull'array passato influisce sull'array "originale"!