Массивдер маалыматтарды структуралаштырылган сактоонун жөнөкөй формаларынын бири. Бир өлчөмдүү массивдерди сактоо үчүн бөлүнбөс эс тутум аймактары бөлүнгөндүктөн, көпчүлүк программалоо тилдери декларациялоо үчүн синтаксистик конструкцияларга ээ болгондуктан, алар ар кандай (анын ичинде китепкана) функцияларга көп көлөмдөгү маалыматты өткөрүп берүү үчүн буфер катары интенсивдүү колдонулат. Өз кезегинде, кээде функциялар массивди кайтарып бериши керек.
Зарыл
- - текст редактору;
- - C же C ++ компилятору жана байланыштыргыч.
Нускамалар
1 кадам
Функциядан же ыкмадан алынган маалыматты, аны чакыруучу бөлүп берген жана шилтеме аркылуу берилген узундуктагы массивге жайгаштырып кайтарыңыз. Тиешелүү маалыматтын түрүн аныктаңыз, мисалы: typedef int t_array10 [10]; Аны декларациялоодо жана керектүү функцияны же методду колдонууда колдонуңуз: void ReturnArray (t_array10 & raOut) {raOut [0] = 10;} Чакыруу ылайыктуу: int aNumbers [10]; ReturnArray (aNumbers); Бул методдун кемчилиги - массивдин узундугу бекитилген.
2-кадам
Массивдин дайындарын көрсөткүч аркылуу берилген чалуучуга бөлүнгөн чыгуучу буферге жайгаштыруу менен кайтарыңыз. Функциянын же методдун прототипинде масштабдын белгисиз экөө тең жарыяланган параметр камтылышы мүмкүн: void ReturnArray (int anArray , int nSize); же көрсөткүч катары: void ReturnArray (int * pnArray, int nSize); Экөөндө тең учурларда, идентификатордун параметрин массивдин белгилеринде колдонсо болот: void ReturnArray (int * pnArray, int nSize) {for (nSize--; nSize> -1; pnArray [nSize] = nSize--);} // int aNumbers чакыруу [10]; ReturnArray (aNumbers, sizeof (aNumbers) / sizeof (aNumbers [0])); Массивдерди функцияларга өткөрүп берүү жана алардан массивдин маалыматтарын кайтарып берүү ыкмасы С программаларын иштеп чыгууда көпчүлүк учурларда колдонулат. маалыматтарды ушундай жол менен кабыл алган жана кайтарган функциялар жана методдор, эреже катары, буфердин чыныгы көлөмү өткөн кошумча параметрге ээ болушу керек.
3-кадам
Функцияда же ыкмада түзүлгөн массивди кайтарыңыз. Формалдуу түрдө, бул учурда массив эмес, анын биринчи элементине көрсөткүч кайтарылышы керек: int * ReturnArray () {int * pnArray = new int [10]; // pnArray менен иштөө return pnArray;} // түзүлгөн массивге көрсөткүч алуу int * pnNumbers = ReturnArray (); // delete pnNumbers колдонуу; // delete Бул ыкманын айрым чектөөлөрү бар. Демек, массив үйүлгөн жерде жайгашышы керек. Мындан тышкары, аны жок кылуу жаратууга ылайыктуу ыкма менен жасалышы керек (жаңы колдонулган учурда, malloc үчүн акысыз, ж.б.).
4-кадам
C ++ программаларын иштеп чыгууда массивдерди ыңгайлуу кайтаруу үчүн контейнер класстарын колдонуңуз. Int үчүн көрсөтүлгөн С ++ стандарттык шаблон китепканасынын вектордук шаблон классынын объектиси болгон массивди жаратуунун жана кайтаруунун мисалы төмөнкүдөй болушу мүмкүн: #include std:: vector ReturnArray () {std:: vector oArray; oArray.resize (10); oArray [0] = 100; oArray [1] = 200; return oArray;} std:: vector oArray = ReturnArray (); Популярдуу алкактардын көпчүлүгү күчтүү класстарды же массив класс шаблондорун камсыз кылгандыгын эске алыңыз. Алар көбүнчө маалыматтарды жашыруун бөлүшүү түшүнүгүн шилтеме эсептөө жана көчүрмө жазуу менен жүзөгө ашырышат. Демек, мындай массивдердин мааниси боюнча функциялардан кайтаруу абдан натыйжалуу жүргүзүлөт жана эсептөө ресурстарынын минималдуу чыгымдалышы менен байланыштуу.