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