Як повернути масив.

Масиви є однією з найпростіших форм структурованого зберігання даних. Оскільки під зберігання одновимірних масивів відводяться неподільні області пам'яті, і більшість мов програмування має синтаксичні конструкції для їх оголошення, вони інтенсивно використовуються як буферів для передачі великих обсягів інформації різним (у тому числі і бібліотечним) функцій. У свою чергу функціям іноді потрібно повернути масив.
Вам знадобиться
  • - текстовий редактор;
  • - компілятор і линкер 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 std :: vector ReturnArray () {std :: vector oArray; oArray.resize (10); oArray [0] = 100; oArray [1] = 200; return oArray;} std :: vector oArray = ReturnArray (); Зверніть увагу на те, що більшість популярних фреймворків надає потужні класи або шаблони класів масивів. Найчастіше вони реалізують концепцію неявного розділення даних з підрахунком посилань і копіюванням при записі. Тому повернення за значенням подібних масивів з функцій виконується досить ефективно і пов'язаний з мінімальною витратою обчислювальних ресурсів.