Jinsi Ya Kupitisha Safu Kwa Kazi

Orodha ya maudhui:

Jinsi Ya Kupitisha Safu Kwa Kazi
Jinsi Ya Kupitisha Safu Kwa Kazi

Video: Jinsi Ya Kupitisha Safu Kwa Kazi

Video: Jinsi Ya Kupitisha Safu Kwa Kazi
Video: Code za siri za kupata sms na call bila kushika simu ya mpenzi wako/hata akiwa mbali 2024, Desemba
Anonim

Arrays ni moja wapo ya aina zinazotumika sana za uhifadhi wa data katika mipango ya kompyuta. Usindikaji wao unaweza kufanywa na algorithms anuwai inayotekelezwa katika njia na kazi za darasa. Ipasavyo, mara nyingi inahitajika kupitisha safu kwa kazi. Lugha za C na C ++ hutoa uhuru mkubwa katika kuchagua njia za kutekeleza kitendo hiki.

Jinsi ya kupitisha safu kwa kazi
Jinsi ya kupitisha safu kwa kazi

Ni muhimu

watunzi wa lugha za C na C ++

Maagizo

Hatua ya 1

Pitisha safu ya saizi iliyowekwa kwa kazi. Badilisha mfano wa kazi ili iwe na hoja ya aina inayofaa. Kwa mfano, tamko la kazi ambayo inachukua safu ya nambari kamili za nambari za vitu vitatu kama parameta inaweza kuonekana kama hii:

utupu ArrayFunction (int aNumbers [3]);

Kazi kama hiyo inaitwa kwa kupitisha safu moja kwa moja kwake kama hoja:

Utupu wa Baadhi ya Kazi ()

{

nambari = {1, 2, 3};

ArrayFunction (aNamba);

}

Takwimu zilizohamishwa zinakiliwa kwenye ghala. Kubadilisha safu katika kazi inayoitwa haibadilishi chanzo.

Hatua ya 2

Pitisha safu za urefu tofauti kwa kazi. Ili kufanya hivyo, sio tu kutaja ukubwa wa hoja inayofanana:

utupu ArrayFunction (int aNumbers );

Upangaji wa anuwai nyingi pia unaweza kupitishwa kwa njia ile ile (tu "mwelekeo" wa kwanza unaweza kuwa vigeugeu):

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

Kazi hizi zinaitwa kwa njia sawa na katika hatua ya kwanza.

Ili uweze kusindika kwa usahihi safu za urefu tofauti katika kazi, lazima lazima upitishe wazi idadi ya vitu vyao kupitia parameta ya ziada, au utumie mikataba ambayo inaweka vizuizi kwa maadili ya vitu wenyewe (thamani fulani lazima iwe ishara ya mwisho wa safu).

Hatua ya 3

Pitisha safu kwa pointer. Hoja ya kazi lazima iwe kiashiria cha thamani na aina inayolingana na vitu vya safu. Kwa mfano:

Utupu ArrayFunction (int * pNumbers);

Ufikiaji wa data katika kazi inaweza kufanywa wote katika notation ya kufanya kazi na vitu vya safu, na kutumia hesabu ya anwani:

Utupu ArrayFunction (int * pNumbers)

{

idadi [0] = 10; // upatikanaji wa kipengele 0

* (nambari + 1) = 20; // ufikiaji wa kipengee 1

}

Kuwa mwangalifu! Kwa kuwa kazi imepitishwa sio nakala ya data, lakini kielekezi kwake, safu ya asili itarekebishwa.

Faida ya njia hii ni kasi, uchumi wa rasilimali za hesabu na kubadilika fulani. Kwa hivyo, unaweza kupiga kazi ya kulenga kwa kuipitisha kiboreshaji kwa kitu kiholela cha safu:

Utupu wa Baadhi ya Kazi ()

{

nambari = {1, 2, 3};

ArrayFunction (aNamba); // safu nzima

ArrayFunction (& aNamba [1]); // kuanzia kipengee cha pili

}

Njia hii pia kawaida hujumuisha kupitisha idadi ya vitu vinavyopatikana katika parameta ya ziada au kutumia kipashio cha safu.

Hatua ya 4

Pitisha data kwa kazi na parameta ambayo ni kitu au rejeleo la kitu cha darasa ambacho kinatekeleza utendaji wa safu. Madarasa kama hayo au templeti za darasa kawaida hupatikana katika maktaba na mifumo maarufu (QVector katika Qt, CArray katika MFC, std:: vector katika STL, n.k.).

Mara nyingi madarasa haya hutumia mkakati kamili wa kushiriki data na kuhesabu kumbukumbu, kufanya nakala ya kina tu wakati data imebadilishwa (nakala kwenye maandishi). Hii hukuruhusu kupunguza matumizi ya rasilimali za hesabu hata katika hali ya kupitisha vitu vya safu kwa thamani kupitia hoja za kazi na njia:

ArrayFunction tupu (QVector oArray)

{

int nItemCount = oArray.count ();

int nItem = oArray [0];

}

Utupu wa Baadhi ya Kazi ()

{

QVector oArray (10);

kwa (int i = 0; i

Ilipendekeza: