Arduino Return Array dalla funzione
Poiché le schede Arduino sono programmate utilizzando il linguaggio C/C ++, quindi entrambe queste lingue non consentono di restituire un array a una funzione come argomento. Tuttavia, possiamo restituire un array da una funzione specificando il nome dell'array senza indice.
Dobbiamo dichiarare una funzione che restituisce un puntatore se vogliamo restituire un array unidimensionale dalla funzione. Il secondo punto da ricordare è che la lingua C non consente alle variabili locali di restituire indirizzi al di fuori della funzione, quindi le variabili locali dovrebbero essere dichiarate statiche per evitare qualsiasi errore di compilazione.
Descrizione
Durante la programmazione delle schede Arduino possiamo inizializzare un array con una dimensione particolare, una volta inizializzato l'array, il suo valore può essere sostituito usando una funzione. Allocazione di memoria dinamica è richiesto quando vogliamo restituire un array inizializzato all'interno di una funzione. Per fare questo Malloc () E gratuito() Le funzioni possono essere utilizzate insieme ai puntatori in Arduino.
Il problema è che se una funzione restituisce un array utilizzando l'allocazione della memoria dinamica, il risultato può essere modificato a causa della perdita di memoria e dei puntatori penzolanti. Quindi il modo migliore per restituire un array da una funzione è inizializzare un array e modificarne i valori usando una funzione invece di restituire l'intero array dalla funzione.
Creiamo una funzione per modificare i valori di un array inizializzandolo con una dimensione intera costante. Vedi il codice qui sotto.
Codice di esempio
const int size = 5; /*Dimensione dell'array definita*/Nel codice sopra, un array viene inizializzato usando numeri interi costanti perché se non usiamo un numero intero costante, IDE mostrerà un errore. Qui nell'array dato, non abbiamo memorizzato alcun valori in modo che l'array venga inizializzato con valori null ma possiamo anche archiviare i valori all'interno dell'array durante l'inizializzazione.
Successivamente abbiamo creato il Vettore() funzione con tipo di ritorno vuoto per archiviare i valori all'interno dell'array. Inoltre, il tipo di ritorno è nullo perché non vogliamo restituire nulla di cui dobbiamo solo archiviare i valori, nel caso in cui si debba restituire il valore, possiamo cambiare il tipo di reso in base a loro come int.
Prossimo per Loop viene utilizzato per archiviare i valori, tuttavia possiamo anche archiviare i valori manualmente. Dopo quello usando Seriale.stampa() L'output è stampato sul monitor seriale.
Produzione
Valori di stampa di output da 0 a 4 restituendo un array da una funzione:
Conclusione
Questo articolo copre tutti i passaggi dettagliati su come possiamo inizializzare un array utilizzando il tipo di dati interi costanti e archiviare il valore al suo interno utilizzando il loop. Più tardi il Vettore() La funzione è chiamata all'interno della parte di configurazione del codice, risultando Array di ritorno dalla funzione.