Връщане на масив от функция C ++

Return Array From Function C



Масивите са специфични контейнери, които имат стойности от един и същ тип данни. Функциите в C ++ изпълняват операции върху масиви и тези масиви след това се връщат към основната функция. Има много подходи за описване на това явление. В това ръководство са обяснени някои често срещани методи:

Използвайте указатели, за да върнете статичния масив

Когато използваме нормален масив, има шанс да имаме някакви ненормални резултати. За да избегнем това, използваме статичен масив в нашия C ++ код. Нека разберем примера, който използвахме. В тази функция декларирахме масив с 5 стойности за връщащия тип, както е споменато тук.







Int *функция ()



Тъй като стойността ще бъде целочислена, тя е маркирана като int в примера по -долу. Тъй като сме въвели функцията като указател, функцията ще бъде тип указател. След въвеждане на стойностите, масив се връща в основната програма.







В основната програма направихме извикване на функция. За да приемем стойността, която се връща от функцията, ще използваме целочислена променлива. Когато масивът бъде върнат, можем лесно да получим достъп до неговите стойности. Стойностите ще бъдат отпечатани ръчно.

Int*показалец=функция();

Целта на показалеца е да намери елемента, който присъства в индекса един от масива. С други думи, той показва адреса на стойността в масива. След това използваме прототип на функция, който ще върне показалеца.



За да видим изхода на масива, върнат чрез функцията, трябва да имаме достъп до терминала Ubuntu в случай на Linux. Това се дължи на това, че изходът е достъпен чрез терминала на Linux. В Linux се нуждаем от компилатор за изпълнение на C ++ кодове, написани във всеки текстов редактор. Тази компилация се извършва чрез G ++. -O се използва за съхраняване на изхода във файл. Тук се нуждаем от изходния файл и файла с изходния код. След компилацията ще изпълним кода:

$g ++ -илиfile1 file1.c
$./файл1

От изхода можем да видим, че масивът, който е инициализиран във функцията, се показва в основната функция с помощта на статичен масив, инициализиран ръчно и чрез указателите.

Връщане на динамично разпределен масив с помощта на указатели

Масивите могат да бъдат върнати с помощта на динамично разпределение. Масивите могат да се разпределят динамично, като се използва думата new. Те ще останат там, докато не ги изтрием сами. Статичните масиви са с фиксиран размер, което означава, че трябва да предоставите размер по време на инициализацията. След като масивът е създаден, тогава е трудно да се увеличи размерът по време на изпълнение или по -нататък. Но в случая с динамичния масив, можем да добавяме повече елементи, когато пожелаем, защото той се разширява, когато въвеждаме стойности в него. Така че не е необходимо да посочваме или идентифицираме какъвто и да е размер.

Преминавайки към примера, който използвахме тук. Използвали сме динамичен масив с указателите, както в предишните примери, където сме използвали указатели със статични масиви.

Int*функция()

След деклариране на функция масивите се декларират динамично:

Int*масив= нов int [100];

Терминът, нов, постоянно се използва за създаване на динамичен масив. Ще извършваме операции с масива, като въвеждаме стойности в него. След това масивът се връща в основната програма:

Сега помислете за основната функция. Направихме извикване на функцията. Тъй като масивът се връща, ние добавяме променлива тип целочислено указател, за да приемем стойността.

Int*показалец=функция();

Стойностите, съхранени в масива, се отпечатват ръчно. Резултатът се получава чрез метода на компилация и изпълнение.

Върнете масив с помощта на структурите

Структурите са контейнерите като масиви. Но масивът съдържа стойността на един и същ тип данни наведнъж. А в случай на структури, те съдържат повече от една стойност на типа данни. Взехме структура, наречена проба. Тук декларацията на масива е вътре в структурите вместо във функциите. Типът на връщане е името на структурата. Структурната променлива се връща в основната програма. Структурата използва думата struct за деклариране.

Структурна проба
{
Int обр[100];
};

След декларацията на структурата сме използвали функция, в която се създава обект на структура. Този обект ще се използва за достъп до структурата. Тази функция ще върне обекта на структурата към основната функция, така че да можем да отпечатаме масива през този обект. Променливата ще получи стойностите в променливата. Тази стойност е цяло число, до което ще въведем стойности в масива. Както в този пример, ние сме избрали 6 като число. Така че числата ще бъдат въведени до 6 в масива.

Примерна структура func(intн)

Сега, преминавайки към основната програма, ние създадохме обект за достъп до масива чрез това:

Проба от структура x;

След инициализиране на обект, към променливата се добавя стойност, до която искаме числата да бъдат въведени в масива. При извикване на функция ще предадем стойността в параметъра:

х=функция(н);

Ще имаме дисплея, като използваме цикъла for. Стойностите се показват чрез обекта, деклариран в началото на основната програма:

Изходът показва, че в резултата са показани 6 стойности, тъй като сме въвели 6 числа в програмата.

Върнете масив с помощта на Std

C ++ използва много методи за връщане на масив от функцията. Един от тях е чрез std :: array. Това е шаблон за структура. Тази функция предоставя и още две функции, които са size () и empty (). Връща се име на масив, което показва, че целият масив е върнат в основната програма. Тук ще добавим заглавен файлов масив. В допълнение към библиотеката, тя съдържа всички функции на масива.

#включва

масив<int,10>функция()

Тъй като можем да върнем целия масив с неговото име, затова в декларацията на функция ще използваме масива като тип връщане. Данните се въвеждат в масива. След това масивът ще бъде върнат в основната програма. Придвижвайки се към основната функция, променливата на масива ще приеме масива, когато функцията се извика.

обр=функция();

Отново цикълът for ще се използва за показване на стойностите на масива. Наблюдаваме изхода от изображението, показано по -долу. Тъй като сме използвали 10 размера, ще бъдат въведени 0 числа. Следователно те се показват:

Върнете масив през векторен контейнер

Този подход е динамично разпределен масив. Както в този случай, няма нужда да посочвате размера на масива. Тук не се нуждаем от параметър за размер. Използвайки този пример, трябва да добавим векторна заглавка в библиотеката, която съдържа функционалностите на вектора.

Придвижване към функцията, където типът на връщане също е int вектор и също така съдържа указател на вектор като аргумент в параметъра. Тук е въведен масив с име temp:

Вектор<int>MultiplyArrayByTwo(constвектор<int> *обр)

Функцията ще умножи елементите на масива по два чрез използването на функцията tmp.push_back (). След това върнете tmp. Променлива с автоматичен тип ще приеме стойностите на масива от функцията. Масивът съдържа елементите в него.

Изходът показва работата на векторния контейнер.

Заключение

В гореспоменатата статия описахме петте най -често използвани метода за обяснение на функционалността на връщане на масив от функцията.