Как вернуть массив из функции?

3 ноября 2014 г. Просмотров: 818
Поименованная совокупность однотипных данных, называемая массивом, широко используется в различных языках программирования. С помощью массива значительно облегчается работа с данными, обеспечивается структурированность программного кода. Функции в языках также имеют огромное значение, позволяя выполнять узконаправленную задачу в любом месте кода, без ее повторной реализации. При этом часто возникает необходимость использования данных одного массива как в функции, так и в других блоках кода. Возвращение массива из функции может быть реализовано несколькими способами.

Инструкция

  • В языке программирования С++ непосредственный возврат массива из функции непредусмотрен, данную задачу можно решить с помощью передачи указателя на массив данных. Для этого при объявлении используемой функции пропишите ей в качестве возвращаемого значения указатель на тип данных, массив которых планируется передавать. Пример кода программы на языке С++, реализующий возврат данных массива по указателю:class СHelp{private: int m_data[4];public: fDebit() { m_data[0]=42; m_data[1]=56; } int *returnArray() // объявление и описание функции { return m_data; }};void main(){ int *m_dataA; СHelp *ohelp=new СHelp(); m_dataA=ohelp->returnArray(); // возврат массива класса }Однако следует иметь в виду, что подобный возврат возможен лишь в рамках одного класса. Если требуется использовать обычную функцию в коде программы, аналогичная передача данных через указатель будет некорректной и может выполняться с ошибкой. Это связано с областью видимости переменных. При создании массива в самой функции он не будет виден за ее пределами.
  • В случае необходимости передачи массива из локальной функции следует воспользоваться следующим вариантом. Сформируйте массив в основном коде программы. Объявите функцию с параметрами, первым из которых будет константный указатель на тип данных массива, второй – обычный указатель того же вида. При вызове функции передайте в качестве первого и второго параметра один и тот же адрес созданного массива. Работу с данными в функции осуществляйте с первым полученным указателем, а все изменения записывайте по указателю второго. Таким образом, по завершении функции вы получите результаты его работы в массиве по второму указателю. Пример объявления такой функции:void my_funk_1(const double* in, doble* out);
  • Используйте реализованный класс std::auto_ptr, решающий задачу передачи указателя из функции без ошибок с областью видимости переменных. Пример кода программы:include include int[] Аrr_f2(int count) // описание функции{return new int[count];}void main(){ std::auto_ptr ptr(Аrr_f2(20)); // вызов функции и возврат ею массива cout
  • В языке программирования FoxPro возврат функции можно реализовать похожим способом, обращаясь к ранее созданному массиву.Пример кода на языке FoxPro:LOCAL mas(2) =func_2(@f3)?mas(15)?mas(20)FUNCTION func_2(mas)EXTERNAL ARRAY masmas(1)=1mas(2)=2RETURNENDFUNC
  • Скриптовый язык AutoIt позволяет вернуть массив из функции, используя стандартные конструкции и оператор Return.Пример кода на языке AutoIt:#include $Rez = func_3()$aRezultat=StringSplit($Rez,'|')Func func_3() $aRet= 15 & '|' & 40 Return $aRet // возврат массива aRet из функцииEndFunc
  • Оцените статью!