Массивтер - бұл деректерді құрылымдаудың қарапайым түрлерінің бірі. Бөлінбейтін жады аймақтары бір өлшемді массивтерді сақтауға бөлінгендіктен және бағдарламалау тілдерінің көпшілігінде оларды жариялау үшін синтаксистік құрылымдар болғандықтан, олар үлкен көлемдегі ақпараттарды әртүрлі (соның ішінде кітапханалық) функцияларға жіберу үшін буфер ретінде қарқынды қолданылады. Өз кезегінде, кейде функциялар массивті қайтаруы керек.
Қажетті
- - мәтіндік редактор;
- - 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-мен жұмыс pnArray қайтару;} // құрылған массивке нұсқау алу int * pnNumbers = ReturnArray (); // delete pnNumbers қолдану; // delete Бұл әдістің кейбір шектеулері бар. Сонымен, массив үйіндіде орналасуы керек. Сонымен қатар, оны жою жасалуға сәйкес әдіспен жасалуы керек (жаңа қолданылған жағдайда жою, malloc үшін ақысыз және т.б.).
4-қадам
С ++ бағдарламаларын жасау кезінде массивтерді ыңғайлы қайтару үшін контейнер кластарын қолданыңыз. Int үшін көрсетілген C ++ стандартты шаблондар кітапханасының векторлық шаблон класының объектісі болып табылатын жиымды құру және қайтару мысалы келесідей болуы мүмкін: #include std:: vector ReturnArray () {std:: vector oArray; oArray.resize (10); oArray [0] = 100; oArray [1] = 200; return oArray;} std:: vector oArray = ReturnArray (); Танымал фреймворктердің көпшілігі қуатты сыныптар немесе массив класының шаблондарын ұсынатынын ескеріңіз. Олар көбінесе деректерді санау және көшіру кезінде жасырын деректерді бөлу тұжырымдамасын жүзеге асырады. Сондықтан функциялардан осындай массивтердің мәні бойынша қайтару өте тиімді орындалады және есептеу ресурстарының минималды шығындарымен байланысты.