Масивите са една от най-простите форми на структурирано съхранение на данни. Тъй като неделимите области на паметта са разпределени за съхранение на едномерни масиви и повечето езици за програмиране имат синтактични конструкции за тяхното деклариране, те се използват интензивно като буфери за прехвърляне на големи количества информация към различни (включително библиотечни) функции. На свой ред функциите понякога трябва да връщат масив.
Необходимо
- - текстов редактор;
- - 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])); Този метод за предаване на масиви на функции и връщане на данни от масиви от тях се използва в преобладаващото мнозинство от случаите при разработване на програми на C. функциите и методите, които приемат и връщат данни по този начин, като правило трябва да имат допълнителен параметър, през който се предава действителният размер на буфера.
Стъпка 3
Връща масив, създаден във функция или метод. Формално в този случай не трябва да се връща масив, а указател към първия му елемент: int * ReturnArray () {int * pnArray = new int [10]; // работим с pnArray return pnArray;} // получаваме указател към създадения масив int * pnNumbers = ReturnArray (); // използваме delete pnNumbers; // изтриване Този метод има някои ограничения. Така че масивът трябва да се намира в купчина. Освен това изтриването му трябва да се извърши с метода, съответстващ на създаването (изтриване в случай на използване на нов, безплатен за malloc и др.).
Стъпка 4
Използвайте класове контейнери за удобно връщане на масиви при разработване на програми на C ++. Пример за създаване и връщане на масив, който е обект на векторния клас на шаблон на C ++ стандартната библиотека с шаблони, посочен за int, може да изглежда по следния начин: #include std:: vector ReturnArray () {std:: vector oArray; oArray.resize (10); oArray [0] = 100; oArray [1] = 200; return oArray;} std:: vector oArray = ReturnArray (); Обърнете внимание, че повечето от популярните рамки предоставят мощни класове или шаблони за клас масиви. Те често прилагат концепцията за неявно споделяне на данни с преброяване на референции и копиране при запис. Следователно връщането по стойност на такива масиви от функции се извършва много ефективно и е свързано с минимално потребление на изчислителни ресурси.