Imenovana zbirka iste vrste podataka, koja se naziva niz, široko se koristi u raznim programskim jezicima. Uz pomoć niza puno je lakše raditi s podacima, osigurana je struktura programskog koda. Funkcije u jezicima također puno napreduju, omogućujući vam izvršavanje visoko ciljanog zadatka bilo gdje u vašem kodu, bez ponovne primjene. U ovom je slučaju često potrebno koristiti podatke jednog polja i u funkciji i u drugim blokovima koda. Vraćanje niza iz funkcije može se implementirati na nekoliko načina.
Upute
Korak 1
U programskom jeziku C ++ nije osiguran izravan povratak niza iz funkcije; taj se zadatak može riješiti prosljeđivanjem pokazivača na niz podataka. Da biste to učinili, prilikom deklariranja funkcije koja će se koristiti, zapišite je kao povratnu vrijednost pokazivač na tip podataka čiji niz planirate prenijeti.
Primjer programskog koda C ++ koji implementira vraćanje podataka niza pokazivačem:
razred S Pomoć
{
privatna:
int m_data [4];
javnost:
fDebit ()
{
m_data [0] = 42;
m_podaci [1] = 56;
}
int * returnArray () // deklaracija i opis funkcije
{
vrati m_data;
}
};
void main ()
{
int * m_dataA;
Pomoć * ohelp = nova Pomoć ();
m_dataA = ohelp-> returnArray (); // vraća niz razreda
}
Međutim, treba imati na umu da je takav povratak moguć samo unutar jedne klase. Ako trebate koristiti uobičajenu funkciju u programskom kodu, sličan prijenos podataka kroz pokazivač bit će netočan i može se izvršiti s pogreškom. To je povezano s opsegom varijabli. Kada kreirate niz u samoj funkciji, on neće biti vidljiv izvan funkcije.
Korak 2
Ako trebate prenijeti niz iz lokalne funkcije, trebali biste koristiti sljedeću opciju. Formirajte niz u glavnom programskom kodu. Deklarirajte funkciju s parametrima, od kojih će prva biti stalni pokazivač na tip podataka niza, druga je redoviti pokazivač iste vrste. Kada pozivate funkciju, proslijedite istu adresu stvorenog niza kao prvi i drugi parametar. Radite s podacima u funkciji s prvim primljenim pokazivačem i upišite sve promjene prema drugom pokazivaču. Tako ćete po završetku funkcije rezultate drugog rada primiti u polje na drugom pokazivaču.
Primjer deklariranja takve funkcije:
void my_funk_1 (const double * in, doble * out);
3. korak
Koristite implementiranu klasu std:: auto_ptr koja rješava problem prosljeđivanja pokazivača iz funkcije bez pogrešaka s promjenjivim opsegom.
Uzorak programskog koda:
uključuju
uključuju
int Arr_f2 (int count) // opis funkcije
{
vrati novi int [count];
}
void main ()
{
std:: auto_ptr ptr (Arr_f2 (20)); // poziva funkciju i po njoj vraća niz
cout
4. korak
U programskom jeziku FoxPro, povratak funkcije može se implementirati na sličan način pozivanjem na prethodno stvoreni niz.
Uzorak koda u FoxPro:
LOKALNI mas (2)
= func_2 (@ f3)
? mas (15)
? mas (20)
FUNKCIJA func_2 (mas)
VANJSKI NIZ mas
mas (1) = 1
mas (2) = 2
POVRATAK
ENDFUNC
Korak 5
Skriptni jezik AutoIt omogućuje vam vraćanje niza iz funkcije pomoću standardnih konstrukcija i operatora Return.
Uzorak koda na jeziku AutoIt:
#include
$ Rez = func_3 ()
$ aRezultat = StringSplit ($ Rez, '|')
Func func_3 ()
$ aRet = 15 & '|' & 40
Vrati $ aRet // vrati niz aRet iz funkcije
EndFunc