Ang mga array ay isa sa pinakasimpleng anyo ng nakaayos na pagtatago ng data. Dahil hindi maibabahagi ang mga lugar ng memorya na inilalaan para sa pagtatago ng mga isang-dimensional na array, at ang karamihan sa mga wika ng programa ay may mga syntactic na konstruksyon para sa kanilang deklarasyon, masinsinang ginagamit sila bilang mga buffer para sa paglilipat ng maraming impormasyon sa iba't ibang (kabilang ang library) na mga pagpapaandar. Kaugnay nito, ang mga pag-andar minsan ay kailangang bumalik ng isang array.
Kailangan
- - text editor;
- - C o C ++ tagatala at linker.
Panuto
Hakbang 1
Ibalik ang data mula sa isang pagpapaandar o pamamaraan sa pamamagitan ng paglalagay nito sa isang nakapirming haba na array, inilalaan ng tumatawag, at ipinasa ng sanggunian. Tukuyin ang naaangkop na uri ng data, halimbawa: typedef int t_array10 [10]; Gamitin ito sa deklarasyon at pagpapatupad ng kinakailangang pag-andar o pamamaraan: void ReturnArray (t_array10 & raOut) {raOut [0] = 10;} Tumawag nang naaangkop: int aNumber [10]; ReturnArray (aNumber) Ang kawalan ng pamamaraang ito ay naayos ang haba ng array.
Hakbang 2
Ibalik ang data ng array sa pamamagitan ng paglalagay nito sa isang buffer ng output na inilalaan ng tumatawag na ipinasa ng pointer. Ang prototype ng isang pagpapaandar o pamamaraan ay maaaring maglaman ng isang parameter na idineklara kapwa sa pag-nota ng array nang walang pagtutukoy ng laki: void ReturnArray (int anArray , int nSize); o bilang isang pointer: void ReturnArray (int * pnArray, int nSize); Sa pareho mga kaso, ang parameter ng identifier ay maaaring magamit sa pag-notate ng array: void ReturnArray (int * pnArray, int nSize) {para (nSize--; nSize> -1; pnArray [nSize] = nSize--);} // call int aNumber [10]; ReturnArray (aNumber, sizeof (aNumber) / sizeof (aNumber [0])); Ang pamamaraang ito ng pagpasa ng mga arrays sa mga pagpapaandar at pagbabalik ng data ng array mula sa kanila ay ginagamit sa napakaraming mga kaso kapag bumubuo ng mga programa ng C. Tandaan na mga pag-andar at pamamaraan na tumatanggap at nagbabalik ng data sa ganitong paraan, bilang panuntunan, dapat magkaroon ng isang karagdagang parameter kung saan naipasa ang aktwal na laki ng buffer.
Hakbang 3
Ibalik ang isang array na nilikha sa isang pagpapaandar o pamamaraan. Pormal, sa kasong ito, hindi dapat ibalik ang isang array, ngunit isang pointer sa unang elemento nito: int * ReturnArray () {int * pnArray = new int [10]; // work with pnArray return pnArray;} // kumuha ng isang pointer sa nilikha array int * pnNumber = ReturnArray (); // use delete pnNumber; // delete Ang pamamaraang ito ay may ilang mga limitasyon. Kaya, ang array ay dapat na matatagpuan sa magbunton. Bilang karagdagan, ang pagtanggal nito ay dapat gawin sa pamamaraang naaayon sa paglikha (tanggalin sa kaso ng paggamit ng bago, libre para sa malloc, atbp.).
Hakbang 4
Gumamit ng mga klase ng lalagyan upang maginhawang ibalik ang mga array kapag bumubuo ng mga programa ng C ++. Ang isang halimbawa ng paglikha at pagbabalik ng isang array na isang object ng vector template class ng C ++ Standard Template Library na tinukoy para sa int ay maaaring magmukhang ganito: #include std:: vector ReturnArray () {std:: vector oArray; oArray.resize (10); oArray [0] = 100; oArray [1] = 200; ibalik ang oArray;} std:: vector oArray = ReturnArray (); Tandaan na ang karamihan sa mga tanyag na balangkas ay nagbibigay ng malakas na mga klase o mga template ng klase ng array. Madalas nilang ipinatupad ang konsepto ng implicit na pagbabahagi ng data sa pagbibilang ng sanggunian at pagsulat ng kopya. Samakatuwid, ang pagbabalik ng halaga ng naturang mga arrays mula sa mga pag-andar ay ginaganap nang napakahusay at nauugnay sa isang minimum na pagkonsumo ng mga mapagkukunan sa computing.