Hvordan du returnerer matrisen fra funksjon i arduino

Hvordan du returnerer matrisen fra funksjon i arduino
Arduino er en elektronisk plattform som bruker et eget verktøy Arduino IDE for å programmere mikrokontrollertavler. Som C ++ Arduino -programmering bruker også matriser for å lagre flere dataverdier samtidig. Hvis vi tenker på en variabel som en lagringsbeholder, er matriser som containere, men med delere som kan lagre flere data om gangen. Arduino -matriser brukes til å kontrollere LED -matriser, tastaturer og LCD -skjermer.

Arduino Return -matrise fra funksjon

Ettersom Arduino -tavler er programmert ved hjelp av C/C ++ språk, slik at begge disse språkene ikke tillater å returnere en matrise til en funksjon som et argument. Imidlertid kan vi returnere en matrise fra en funksjon ved å spesifisere matrisens navn uten noen indeks.

Vi må erklære en funksjon som returnerer en peker hvis vi ønsker å returnere en endimensjonal matrise fra funksjonen. Det andre poenget å huske er at C -språket ikke tillater lokale variabler å returnere adresser utenfor funksjonen, så lokale variabler bør erklæres som statiske for å unngå samlingenfeil.

Beskrivelse

Mens programmering av Arduino -brett kan vi initialisere en matrise med en bestemt størrelse, når matrisen er initialisert, kan verdien erstattes ved hjelp av en funksjon. Dynamisk minnetildeling kreves når vi ønsker å returnere en matrise som initialiseres i en funksjon. Å gjøre dette Malloc () og gratis() Funksjoner kan brukes sammen med pekere i Arduino.

Problemet er hvis en funksjon returnerer en matrise ved hjelp av dynamisk minnetildeling, kan resultatet endres på grunn av minnelekkasje og dinglende pekere. Så den beste måten å returnere en matrise fra en funksjon er å initialisere en matrise og endre verdiene ved å bruke en funksjon i stedet for å returnere hele matrisen fra funksjonen.

La oss lage en funksjon for å endre verdiene til en matrise ved å initialisere den med en konstant heltallstørrelse. Se koden nedenfor.

Eksempelkode

const int størrelse = 5; /*Array størrelse definert*/
int array_new [størrelse]; /*Ny matrise er definert*/
void array () /*funksjon for å lagre arraysverdi* /

for (int i = 0; i<5;i++) /*for loop to store values in function*/

Array_new [i] = i;


ugyldig oppsett ()

Serie.Begynn (9600); /*Seriell kommunikasjon begynner*/
Matrise (); /*Array -funksjonen kalles*/
for (int i = 0; i
Serie.println (array_new [i]); /*Array -elementer skrives ut*/


void loop ()

I koden ovenfor initialiseres en matrise ved hjelp av konstante heltall fordi hvis vi ikke bruker et konstant heltall, vil IDE vise en feil. Her i den gitte matrisen har vi ikke lagret noen verdier, slik at matrisen blir initialisert med nullverdier, men vi kan også lagre verdier inne i matrisen under initialiseringen.

Neste vi opprettet Array () funksjon som har tomt type for å lagre verdier inne i matrisen. Returtypen er også ugyldig fordi vi ikke vil returnere noe vi bare trenger for å lagre verdier, i tilfelle hvis man trenger å returnere verdien, kan vi endre returtype i henhold til dem som for eksempel int.

NESTE til Loop brukes til å lagre verdier, men vi kan også lagre verdier manuelt. Etter det ved å bruke Serie.skrive ut() Utgangen skrives ut på seriemonitoren.

Produksjon

Utskriftsverdier fra 0 til 4 Returnerer en matrise fra en funksjon:

Konklusjon

Denne artikkelen dekker opp alle detaljerte trinn om hvordan vi kan initialisere en matrise ved å bruke den konstante heltalldatatypen og butikkverdien inne i den ved hjelp av for -loopen. Senere Array () Funksjon kalles inne i oppsettdelen av koden, og det resulterer i Returnerende matrise fra funksjon.