Возврат массива из функции C++

Возврат массива из функции C++ Программирование и разработка

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

Используйте указатели для возврата статического массива

Когда мы используем нормальный массив, есть вероятность получить какие-то ненормальные результаты. Чтобы этого избежать, мы используем статический массив в нашем коде C ++. Давайте разберемся с примером, который мы использовали. В этой функции мы объявили массив с 5 значениями, тип возвращаемого значения, как упоминалось здесь.

Int *function ()

Поскольку значение будет целочисленного типа, в примере ниже оно помечено как «int». Поскольку мы ввели функцию как указатель, функция будет типом указателя. После ввода значений массив возвращается в основную программу.

Поскольку значение будет целочисленного типа

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

Int* pointer = function ();

Назначение указателя — найти элемент, который присутствует в первом индексе массива. Другими словами, он показывает адрес значения в массиве. Затем мы используем прототип функции, которая вернет указатель.

Чтобы увидеть вывод массива, возвращаемого функцией, нам нужен доступ к терминалу Ubuntu в случае Linux. Это связано с тем, что вывод доступен через терминал Linux. В Linux нам нужен компилятор для запуска кода C ++, написанного в любом текстовом редакторе. Эта компиляция выполняется через G ++. «-O» используется для сохранения вывода в файл. Здесь нам нужен выходной файл и файл с исходным кодом. После компиляции выполним код:

g++ -o file1 file1.c
$ . /file1

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

Возврат динамически размещенного массива с помощью указателей

Массивы можно возвращать с помощью динамического выделения. Массивы можно размещать динамически, используя слово «новый». Они останутся там, пока мы сами их не удалим. Статические массивы имеют фиксированный размер, что означает, что вы должны указать размер во время инициализации. После того, как массив создан, трудно увеличить размер во время выполнения или в дальнейшем. Но в случае динамического массива мы можем добавлять больше элементов, когда захотим, потому что он расширяется по мере того, как мы вводим в него значения. Поэтому нам не нужно указывать или указывать какой-либо размер.

Переходим к примеру, который мы здесь использовали. Мы использовали динамический массив с указателями, как в предыдущих примерах, где мы использовали указатели со статическими массивами.

Int *function ()

После объявления функции массивы объявляются динамически:

Int *array = new int [100];

Термин «новый» постоянно используется для создания динамического массива. Мы будем выполнять операции с массивом, вводя в него значения. После этого массив возвращается в основную программу:

Термин «новый» постоянно используется для создания динамического массива

Теперь рассмотрим основную функцию. Мы сделали вызов функции. Когда массив возвращается, мы добавляем переменную целочисленного типа указателя, чтобы принять значение.

Int* pointer = function ();

Значения, которые были сохранены в массиве, распечатываются вручную. Выходные данные получают с помощью метода компиляции и выполнения.

Значения, которые были сохранены в массиве, распечатываются вручную

Возврат массива с использованием структур

Структуры — это контейнеры, подобные массивам. Но массив одновременно содержит значения одного и того же типа данных. А в случае структур они содержат более одного значения типа данных. Мы взяли структуру под названием «образец». Здесь объявление массива находится внутри структур, а не функций. Тип возврата — это имя структуры. Структурная переменная возвращается в основную программу. Структура использует слово «структура» для объявления.

Struct sample
{
Int arr[100];
};

После объявления структуры мы использовали функцию, в которой создается объект структуры. Этот объект будет использоваться для доступа к структуре. Эта функция вернет объект структуры в основную функцию, чтобы мы могли распечатать массив через этот объект. Переменная получит значения в переменной. Это значение представляет собой целое число, до которого мы будем вводить значения в массив. Как и в этом примере, мы выбрали число 6. Таким образом, в массив будут введены числа до 6.

Struct sample func (int n)

После объявления структуры мы использовали функцию

Теперь, переходя к основной программе, мы создали объект для доступа к массиву через это:

Struct sample x;

Теперь, переходя к основной программе, мы создали объект для доступа

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

= func (n);

У нас будет отображение с помощью цикла for. Значения отображаются через объект, объявленный в начале основной программы:

Читайте также:  Python Tkinter Tutorial: создайте игру "камень-ножницы-бумага"

Значения отображаются через объект, объявленный в начале основной программы

Выходные данные показывают, что в результате показано 6 значений, поскольку мы ввели в программу 6 чисел.

Вернуть массив с помощью Std

C ++ использует множество методов для возврата массива из функции. Один из них — через std :: array. Это шаблон структуры. Эта функция также предоставляет еще две функции: size () и empty (). Возвращается имя массива, указывающее, что в основную программу возвращается весь массив. Здесь мы добавим заголовочный файл «array». Помимо библиотеки он содержит все функции массива.

#include <array>

C ++ использует множество методов для возврата массива из функции

array<int,10> function()

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

arr = function();

И снова цикл for будет использоваться для отображения значений массива. Мы наблюдаем вывод из изображения, показанного ниже. Поскольку мы использовали 10 размеров, будет введено 0 чисел. Следовательно, они отображаются:

И снова цикл for будет использоваться для отображения значений массива

Возврат массива через векторный контейнер

Этот подход представляет собой динамически распределяемый массив. Как и в этом случае, указывать размер массива не нужно. Здесь нам не нужны никакие параметры размера. Используя этот пример, нам нужно добавить заголовок «вектор» в библиотеку, которая содержит функции вектора.

Этот подход представляет собой динамически распределяемый массив

Переходим к функции, где возвращаемый тип также является вектором int и также содержит указатель вектора в качестве аргумента в параметре. Здесь представлен массив с именем «temp»:

Vector <int> MultiplyArrayByTwo(const vector<int> *arr)

Функция умножит элементы массива на два с помощью функции tmp.push_back (). Затем верните tmp. Переменная с автоматическим типом будет принимать значения массива из функции. Массив содержит элементы в нем.

Функция умножит элементы массива на два с помощью функции tmp.push_back ()

Вывод показывает работу векторного контейнера.

Заключение

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

Оцените статью
bestprogrammer.ru
Добавить комментарий