Kā Atgriezt Masīvu

Satura rādītājs:

Kā Atgriezt Masīvu
Kā Atgriezt Masīvu

Video: Kā Atgriezt Masīvu

Video: Kā Atgriezt Masīvu
Video: Вот эти слова нужно сказать на банковскую карту. Деньги придут откуда не ждали 2024, Maijs
Anonim

Masīvi ir viens no vienkāršākajiem strukturēto datu glabāšanas veidiem. Tā kā viendimensiju masīvu glabāšanai tiek atdalīti nedalāmi atmiņas apgabali, un lielākajai daļai programmēšanas valodu deklarēšanai ir sintaktiskas konstrukcijas, tās tiek intensīvi izmantotas kā buferi liela apjoma informācijas pārsūtīšanai uz dažādām (arī bibliotēkas) funkcijām. Savukārt funkcijām dažreiz ir jāatdod masīvs.

Kā atgriezt masīvu
Kā atgriezt masīvu

Nepieciešams

  • - teksta redaktors;
  • - C vai C ++ kompilators un saite.

Instrukcijas

1. solis

Atgrieziet datus no funkcijas vai metodes, ievietojot tos fiksēta garuma masīvā, ko piešķir zvanītājs un nodod atsauces veidā. Definējiet piemēroto datu tipu, piemēram: typedef int t_array10 [10]; Izmantojiet to nepieciešamās funkcijas vai metodes deklarācijā un ieviešanā: void ReturnArray (t_array10 & raOut) {raOut [0] = 10;} Atbilstoši izsauciet: int aNumbers [10]; ReturnArray (aNumbers); Šīs metodes trūkums ir tas, ka masīva garums ir fiksēts.

2. solis

Atgrieziet masīva datus, ievietojot tos zvanītāja piešķirtajā izejas buferī, kuru nodod rādītājs. Funkcijas vai metodes prototipā var būt parametrs, kas deklarēts gan masīva apzīmējumā bez lieluma specifikācijas: void ReturnArray (int anArray , int nSize); vai kā rādītājs: void ReturnArray (int * pnArray, int nSize); Abos gadījumos identifikatora parametru var izmantot masīva apzīmējumā: void ReturnArray (int * pnArray, int nSize) {for (nSize--; nSize> -1; pnArray [nSize] = nSize--);} // call int aNumbers [10]; ReturnArray (aNumbers, sizeof (aNumbers) / sizeof (aNumbers [0])); Šī masīvu pārsūtīšanas funkcija un masīvu datu atgriešana no tām tiek izmantota lielākajā daļā gadījumu, izstrādājot C programmas. Ņemiet vērā, ka funkcijām un metodēm, kas šādā veidā pieņem un atgriež datus, parasti ir jābūt papildu parametram, caur kuru tiek nodots faktiskais bufera lielums.

3. solis

Atgriezt funkcijā vai metodē izveidotu masīvu. Formāli šajā gadījumā jāatgriež nevis masīvs, bet gan tā pirmā elementa rādītājs: int * ReturnArray () {int * pnArray = new int [10]; // strādāt ar pnArray return pnArray;} // iegūt rādītāju izveidotajam masīvam int * pnNumbers = ReturnArray (); // izmantot delete pnNumbers; // dzēst Šai metodei ir daži ierobežojumi. Tātad masīvam jāatrodas kaudzē. Turklāt tā ir jādzēš ar izveidošanai atbilstošo metodi (dzēst, ja tiek izmantots jauns, bezmaksas mallocam utt.).

4. solis

Izmantojiet konteineru klases, lai ērti atgrieztu masīvus, izstrādājot C ++ programmas. Masīva izveides un atdošanas piemērs, kas ir int norādītajai C ++ standarta veidņu bibliotēkas vektoru veidņu klases objekts, varētu izskatīties šādi: #include std:: vector ReturnArray () {std:: vector oArray; oArray.resize (10); oArray [0] = 100; oArray [1] = 200; return oArray;} std: vector oArray = ReturnArray (); Ņemiet vērā, ka lielākā daļa populāro ietvaru nodrošina jaudīgas klases vai masīvu klases veidnes. Viņi bieži īsteno netiešas datu koplietošanas koncepciju ar atsauču skaitīšanu un kopēšanu uz rakstīšanas. Tāpēc atgriešanās pēc šādu masīvu vērtības no funkcijām tiek veikta ļoti efektīvi un ir saistīta ar minimālu skaitļošanas resursu patēriņu.

Ieteicams: