Jak zwrócić tablicę z funkcji w Arduino

Jak zwrócić tablicę z funkcji w Arduino
Arduino to platforma elektroniczna, która wykorzystuje osobne narzędzie Arduino IDE do programowania płyt mikrokontrolerów. Podobnie jak programowanie C ++ Arduino wykorzystuje również tablice do przechowywania wielu wartości danych w tym samym czasie. Jeśli myślimy o zmiennej jako kontenerze pamięci, tablice są jak kontenery, ale z dzielnikami, które mogą przechowywać wiele danych. Tablice Arduino są używane do kontrolowania macierzy LED, klawiatury i wyświetlaczy LCD.

Arduino zwracają tablicę z funkcji

Ponieważ płyty Arduino są programowane za pomocą języka c/c ++, więc oba te języki nie pozwalają na zwrócenie tablicy do funkcji jako argumentu. Możemy jednak zwrócić tablicę z funkcji, określając nazwę tablicy bez żadnego indeksu.

Musimy zadeklarować funkcję zwracającą wskaźnik, jeśli chcemy zwrócić jednowymiarową tablicę z funkcji. Drugim punktem do zapamiętania jest to, że język C nie zezwala lokalnym zmiennym na zwracanie adresów poza funkcją, więc zmienne lokalne powinny być zadeklarowane jako statyczne, aby uniknąć jakiegokolwiek błędu kompilacji.

Opis

Podczas programowania płyt Arduino możemy zainicjować tablicę o określonym rozmiarze, po zainicjowaniu tablicy jego wartość można zastąpić za pomocą funkcji. Dynamiczny alokacja pamięci jest wymagane, gdy chcemy zwrócić tablicę, która jest inicjowana w funkcji. Zrobić to Malloc () I bezpłatny() Funkcje można stosować wraz z wskaźnikami w Arduino.

Problem polega na tym, że funkcja zwróci tablicę za pomocą dynamicznej alokacji pamięci, wynik może zostać zmieniony z powodu wycieku pamięci i wiszących wskazówek. Tak więc najlepszym sposobem zwrotu tablicy z funkcji jest zainicjowanie tablicy i zmiana jej wartości za pomocą funkcji zamiast zwracania całej tablicy z funkcji.

Utwórzmy funkcję, aby zmienić wartości tablicy, inicjując ją ze stałym rozmiarem całkowitym. Zobacz kod poniżej.

Przykładowy kod

const int rozmiar = 5; /*Zdefiniowany rozmiar tablicy*/
int array_new [rozmiar]; /*Nowa tablica jest zdefiniowana*/
void array () /*funkcja do przechowywania tablic wartości* /

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

Array_new [i] = i;


void Setup ()

Seryjny.rozpocząć (9600); /*Rozpoczyna się komunikacja szeregowa*/
Szyk(); /*Funkcja tablicy nazywa się*/
dla (int i = 0; i
Seryjny.println (array_new [i]); /*Elementy tablicy są drukowane*/


void Loop ()

W powyższym kodzie tablica jest inicjowana przy użyciu stałych liczb całkowitych, ponieważ jeśli nie używamy stałej liczby całkowitej, IDE wyświetli błąd. Tutaj, w danej tablicy, nie przechowyliśmy żadnych wartości, więc tablica zostanie zainicjowana z wartościami zerowymi, ale możemy również przechowywać wartości w tablicy podczas inicjalizacji.

Następnie stworzyliśmy Szyk() funkcja mając powrót typu nieważne do przechowywania wartości wewnątrz tablicy. Ponadto typ powrotu jest nieważny, ponieważ nie chcemy zwracać niczego, co musimy przechowywać tylko wartości, na wypadek, gdyby trzeba zwrócić wartość, możemy zmienić typ zwrotu według nich, taki jak int.

Następny Do Pętla jest używana do przechowywania wartości, ale możemy również przechowywać wartości ręcznie. Po tym użyciu Seryjny.wydrukować() Wyjście jest wydrukowane na monitor szeregowych.

Wyjście

Wartości drukowania wyjściowego od 0 do 4 Zwracanie tablicy z funkcji:

Wniosek

W tym artykule obejmuje wszystkie szczegółowe kroki, w jaki sposób możemy zainicjować tablicę za pomocą stałego typu danych liczb całkowitych i przechowywać wartość w środku za pomocą pętli dla. Później Szyk() funkcja jest wywoływana wewnątrz części instalacyjnej kodu Zwracanie tablicy z funkcji.