Kā Nodot Masīvu Funkcijai

Satura rādītājs:

Kā Nodot Masīvu Funkcijai
Kā Nodot Masīvu Funkcijai

Video: Kā Nodot Masīvu Funkcijai

Video: Kā Nodot Masīvu Funkcijai
Video: Kā nodot skaitītāju rādījumus pašapkalpošanās portālā www.e-st.lv? 2024, Maijs
Anonim

Masīvi ir viens no visbiežāk izmantotajiem strukturēto datu glabāšanas veidiem datorprogrammās. To apstrādi var veikt ar dažādiem algoritmiem, kas ieviesti klases metodēs un funkcijās. Attiecīgi bieži tiek prasīts masīvam nodot funkciju. C un C ++ valodas piedāvā lielu brīvību, izvēloties šīs darbības veikšanas metodes.

Kā nodot masīvu funkcijai
Kā nodot masīvu funkcijai

Tas ir nepieciešams

C un C ++ valodu sastādītāji

Instrukcijas

1. solis

Nododiet funkcijai fiksēta izmēra masīvu. Mainiet funkcijas prototipu, lai tajā būtu atbilstoša tipa arguments. Piemēram, tādas funkcijas deklarācija, kas kā parametru ņem trīs elementu veselu skaitlisko vērtību masīvu, varētu izskatīties šādi:

void ArrayFunction (int aNumbers [3]);

Šāda funkcija tiek izsaukta, tieši tam nododot masīvu kā argumentu:

void SomeFunction ()

{

int aNumbers = {1, 2, 3};

ArrayFunction (aNumbers);

}

Pārsūtītie dati tiek kopēti uz kaudzes. Masīva modificēšana izsauktajā funkcijā nemaina avotu.

2. solis

Pārnest funkcijai mainīga garuma masīvus. Lai to izdarītu, vienkārši nenorādiet atbilstošā argumenta dimensiju:

void ArrayFunction (int aNumbers );

Daudzdimensionālos masīvus var nodot arī līdzīgā veidā (mainīgie var būt tikai pirmā “dimensija”):

void ArrayFunction (int aNumbers [3] [2]);

Šīs funkcijas tiek izsauktas tāpat kā pirmajā solī.

Lai varētu pareizi apstrādāt mainīga garuma masīvus funkcijā, jums vai nu skaidri jānodod to elementu skaits, izmantojot papildu parametru, vai arī jāizmanto konvencijas, kas uzliek ierobežojumus pašu elementu vērtībām (noteikta vērtība jābūt masīva beigu zīmei).

3. solis

Izlaidiet masīvu ar rādītāju. Funkcijas argumentam jābūt rādītājam uz vērtību ar tipu, kas atbilst masīva elementiem. Piemēram:

void ArrayFunction (int * pNumbers);

Piekļuvi datiem funkcijā var veikt gan apzīmējumā darbam ar masīva elementiem, gan izmantojot adrešu aritmētiku:

void ArrayFunction (int * pNumbers)

{

pSkaitļi [0] = 10; // piekļuve elementam 0

* (pSkaitļi + 1) = 20; // piekļuve 1. vienumam

}

Esi uzmanīgs! Tā kā funkcijai tiek nodota nevis datu kopija, bet gan tās rādītājs, sākotnējais masīvs tiks modificēts.

Šīs metodes priekšrocība ir ātrums, skaitļošanas resursu ekonomija un zināma elastība. Tātad, jūs varat izsaukt mērķa funkciju, nododot to rādītājam patvaļīgam masīva elementam:

void SomeFunction ()

{

int aNumbers = {1, 2, 3};

ArrayFunction (aNumbers); // viss masīvs

ArrayFunction (& aNumbers [1]); // sākot no otrā elementa

}

Šī metode parasti ietver arī pieejamo elementu skaita nodošanu papildu parametrā vai masīva terminatora izmantošanu.

4. solis

Dodiet datus funkcijai ar parametru, kas ir objekts vai atsauce uz klases objektu, kas īsteno masīva funkcionalitāti. Šādas klases vai klases veidnes parasti atrodamas populārās bibliotēkās un ietvaros (QVector Qt, CArray MFC, std:: vector STL utt.).

Bieži vien šīs klases īsteno netiešu datu koplietošanas stratēģiju ar atsauču skaitīšanu, veicot dziļu kopiju tikai tad, kad dati ir modificēti (kopija uz rakstīšanas). Tas ļauj samazināt skaitļošanas resursu patēriņu pat gadījumā, ja masīva objekti tiek nodoti pēc vērtības, izmantojot funkciju un metožu argumentus:

void ArrayFunction (QVector oArray)

{

int nItemCount = oArray.count ();

int nItem = oArray [0];

}

void SomeFunction ()

{

QVector oArray (10);

par (int i = 0; i

Ieteicams: