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

Return Array From Function C



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

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

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







Int * функция ()



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







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

Int*указательзнак равнофункция();

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



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

$g ++ -илиfile1 file1.c
$./file1

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

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

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

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

Int*функция()

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

Int*множествознак равно новый int [100];

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

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

Int*указательзнак равнофункция();

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

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

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

Образец структуры
{
Int arr[100];
};

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

Функция образца структуры(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. Переменная с автоматическим типом будет принимать значения массива из функции. Массив содержит элементы в нем.

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

Заключение

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