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