Si Të Kalosh Një Grup Në Një Funksion

Si Të Kalosh Një Grup Në Një Funksion
Si Të Kalosh Një Grup Në Një Funksion
Anonim

Vargjet janë një nga format më të përdorura për ruajtjen e të dhënave të strukturuara në programet kompjuterike. Përpunimi i tyre mund të bëhet nga algoritme të ndryshëm të zbatuar në metodat dhe funksionet e klasës. Në përputhje me rrethanat, shpesh kërkohet të kalohet një varg në një funksion. Gjuhët C dhe C ++ ofrojnë liri të madhe në zgjedhjen e metodave të kryerjes së këtij veprimi.

Është e nevojshme

përpiluesit e gjuhëve C dhe C ++

Udhëzimet

Hapi 1

Kaloni një grup me madhësi fikse në funksion. Ndryshoni prototipin e funksionit për të përmbajtur një argument të llojit të duhur. Për shembull, deklarimi i një funksioni që merr një varg vlerash numerike të plotë të tre elementeve si një parametër mund të duket kështu:

Funksioni i pavlefshëm i Array (int numrat [3]);

Një funksion i tillë quhet duke kaluar një koleksion direkt tek ajo si argument:

i pavlefshëm DisaFunksion ()

{

int aNumrat = {1, 2, 3};

Funksioni Array (numrat);

}

Të dhënat e transferuara kopjohen në pirg. Modifikimi i vargut në funksionin e thirrur nuk e ndryshon burimin.

Hapi 2

Kaloni vargjeve me gjatësi të ndryshueshme në funksion. Për ta bërë këtë, thjesht mos specifikoni dimensionin e argumentit përkatës:

funksion i pavlefshëm Array (int numrat );

Vargjet shumëdimensionale gjithashtu mund të kalohen në një mënyrë të ngjashme (vetëm "dimensioni" i parë mund të jetë variabël):

Funksioni i pavlefshëm Array (int numrat [3] [2]);

Këto funksione thirren në të njëjtën mënyrë si në hapin e parë.

Në mënyrë që të jeni në gjendje të përpunoni në mënyrë korrekte vargje me gjatësi të ndryshueshme në një funksion, duhet ose të kaloni në mënyrë të qartë numrin e elementeve të tyre përmes një parametri shtesë, ose të përdorni konvencione që vendosin kufizime në vlerat e vetë elementeve (një vlerë e caktuar duhet të jetë një shenjë e fundit të vargut).

Hapi 3

Kaloni grupin nga treguesi. Argumenti i funksionit duhet të jetë një tregues i një vlere me një tip që korrespondon me elementet e grupit. Për shembull:

Funksioni i pavlefshëm i radhës (int * numrat);

Qasja në të dhëna në një funksion mund të kryhet si në shënimin për të punuar me elementët e grupit, ashtu edhe duke përdorur aritmetikën e adresës:

Funksioni i pavlefshëm i Array (int * numrat)

{

pNumra [0] = 10; // aksesi në elementin 0

* (numrat + 1) = 20; // aksesi në pikën 1

}

Bej kujdes! Meqenëse funksioni nuk kalon një kopje të të dhënave, por një tregues për të, vargu origjinal do të modifikohet.

Avantazhi i kësaj metode është shpejtësia, ekonomia e burimeve llogaritëse dhe një fleksibilitet i caktuar. Kështu që, ju mund ta quani funksionin e synuar duke e kaluar atë një tregues në një element arbitrar të grupit:

i pavlefshëm DisaFunksion ()

{

int aNumrat = {1, 2, 3};

Funksioni Array (numrat); // gjithë grupi

Funksioni Array (& numrat [1]); // duke filluar nga elementi i dytë

}

Kjo metodë gjithashtu zakonisht përfshin kalimin e numrit të elementeve të disponueshëm në një parametër shtesë ose përdorimin e një terminatori të vargut.

Hapi 4

Kaloni të dhëna në një funksion me një parametër që është një objekt ose një referencë në një objekt të klasës që zbaton funksionalitetin e grupit. Klasa ose modele të tilla të klasave zakonisht gjenden në bibliotekat dhe kornizat popullore (QVector në Qt, CArray në MFC, std:: vektor në STL, etj.).

Shpesh këto klasa zbatojnë një strategji të nënkuptuar të ndarjes së të dhënave me numërimin e referencës, duke kryer një kopje të thellë vetëm kur të dhënat modifikohen (kopjoni në shkrim). Kjo ju lejon të minimizoni konsumin e burimeve llogaritëse edhe në rastin e kalimit të objekteve të vargut sipas vlerës përmes argumenteve të funksioneve dhe metodave:

Funksioni i pavlefshëm i grupit (QVector oArray)

{

int nItemCount = oArray.count ();

int nItem = oArray [0];

}

i pavlefshëm SomeFunction ()

{

QVector oArray (10);

për (int i = 0; i

Recommended: