Macierze są jedną z najprostszych form ustrukturyzowanego przechowywania danych. Ponieważ niepodzielne obszary pamięci są przeznaczone do przechowywania tablic jednowymiarowych, a większość języków programowania ma konstrukcje składniowe do ich deklaracji, są one intensywnie wykorzystywane jako bufory do przesyłania dużych ilości informacji do różnych (w tym bibliotecznych) funkcji. Z kolei funkcje czasami muszą zwracać tablicę.
Niezbędny
- - Edytor tekstu;
- - Kompilator i linker C lub C++.
Instrukcje
Krok 1
Zwróć dane z funkcji lub metody, umieszczając je w tablicy o stałej długości, przydzielonej przez obiekt wywołujący i przekazanej przez odwołanie. Zdefiniuj odpowiedni typ danych, na przykład: typedef int t_array10 [10]; Użyj go w deklaracji i implementacji wymaganej funkcji lub metody: void ReturnArray (t_array10 & raOut) {raOut [0] = 10;} Wywołaj odpowiednio: int aNumbers [10];ReturnArray (aNumbers);Wadą tej metody jest to, że długość tablicy jest stała.
Krok 2
Zwróć dane tablicy, umieszczając je w buforze wyjściowym przydzielonym wywołującym, przekazywanym przez wskaźnik. Prototyp funkcji lub metody może zawierać parametr zadeklarowany zarówno w notacji tablicowej bez określenia rozmiaru: void ReturnArray (int anArray , int nSize) lub jako wskaźnik: void ReturnArray (int * pnArray, int nSize); przypadkach, parametr identyfikatora może być użyty w notacji tablicowej: void ReturnArray (int * pnArray, int nSize) {for (nSize--; nSize> -1; pnArray [nSize] = nSize--);} // call int aNumbers [10]; ReturnArray (aNumbers, sizeof (aNumbers) / sizeof (aNumbers [0])); Ta metoda przekazywania tablic do funkcji i zwracania z nich danych tablicowych jest używana w przeważającej większości przypadków podczas tworzenia programów w C. Zauważ, że funkcje i metody, które przyjmują i zwracają dane w ten sposób, z reguły muszą posiadać dodatkowy parametr, przez który przekazywany jest rzeczywisty rozmiar bufora.
Krok 3
Zwraca tablicę utworzoną w funkcji lub metodzie. Formalnie w tym przypadku nie należy zwracać tablicy, ale wskaźnik do jej pierwszego elementu: int * ReturnArray () {int * pnArray = new int [10]; // praca z pnArray return pnArray;} // uzyskaj wskaźnik do utworzonej tablicy int * pnNumbers = ReturnArray (); // użyj delete pnNumbers; // usuń Ta metoda ma pewne ograniczenia. Tak więc tablica musi znajdować się na stercie. Dodatkowo jego usunięcie musi być wykonane metodą odpowiadającą stworzeniu (usuń w przypadku użycia nowego, darmowego dla malloc itp.).
Krok 4
Używaj klas kontenerów, aby wygodnie zwracać tablice podczas tworzenia programów w języku C++. Przykład tworzenia i zwracania tablicy, która jest obiektem klasy szablonów wektorowych ze standardowej biblioteki szablonów C++ określonej dla int, może wyglądać tak: #include std:: vector ReturnArray () {std:: vector oArray; oArray.resize (10); oTablica [0] = 100; oTablica [1] = 200; return oArray;} std:: vector oArray = ReturnArray ();Zauważ, że większość popularnych frameworków udostępnia zaawansowane klasy lub szablony klas tablic. Często wdrażają koncepcję niejawnego udostępniania danych za pomocą zliczania referencji i kopiowania przy zapisie. Dlatego zwracanie wartości takich tablic z funkcji odbywa się bardzo sprawnie i wiąże się z minimalnym zużyciem zasobów obliczeniowych.