Справочник от Автор24
Найди эксперта для помощи в учебе
Найти эксперта
+2

Функция возврата массива Си

Определение 1

Функция возврата массива Си — это процедура, которая выполняет возврат указателя массива.

Введение

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

Код. Автор24 — интернет-биржа студенческих работ

Рисунок 1. Код. Автор24 — интернет-биржа студенческих работ

Передачу массива возможно осуществить следующим образом:

Код. Автор24 — интернет-биржа студенческих работ

Рисунок 2. Код. Автор24 — интернет-биржа студенческих работ

В качестве аргумента функции возможно использование массива. В функцию необходимо передать наименование массива, а фактически его указатель. Приведём пример:

void fun(double );

void fun(double array ) {…}

Образец функции, именуемый fun, снабжён указателем того, что аргументом массива является массив вида double (без идентификатора массива). Функция вызывается так:

fun(array);

В теле функции не копируется массив, все операции выполняются с имеющимися компонентами и по окончании работы функции, величины компонентов массива поменяются (естественно, в случае, если это заложено в функциональный алгоритм). Отсылать в функцию объём массива нет необходимости. Следует заметить, что в языке С++ понятия массива и указателя являются практически синонимами. Но так как переадресация массива по значению означает формирование копии целого массива, что считается достаточно сложной процедурой (массив может быть очень большим), то по этой причине передаётся только указатель на первый элемент массива, а не сам массив. Из этого следует, что два вида задания функции:

«Функция возврата массива Си» 👇
Помощь эксперта по теме работы
Найти эксперта
Решение задач от ИИ за 2 минуты
Решить задачу
Помощь с рефератом от нейросети
Написать ИИ

void f(int A) и void f(int * A)

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

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

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

Приведём пример функции, которая может изменять величины передаваемых ей переменных:

Код. Автор24 — интернет-биржа студенческих работ

Рисунок 3. Код. Автор24 — интернет-биржа студенческих работ

Когда вызывается функция swap, формируются новые аргументы, а и b, они получают веса три и пять. Данные переменные не имеют ни каких связей с переменными р и q, и перемена их числовых значений не влияет на величины р и q. Данный метод передачи параметрических данных определяется как передача параметров по значению. Для обеспечения возможности изменения функцией величин переменных, которые были объявлены в других функциях, следует сделать указание, что параметр, который передаётся, есть не постоянная величина, а переменная. Значения таких параметров следует передавать по ссылке. Чтобы это условие работало, функция swap должна быть задана так:

void swap(int & a, int & b)

Знаки перед именами переменных (амперсанды) обозначают, данные переменные не локальные, а являются ссылками на переменные, которые были указаны как параметры при задании функции. Значит, когда вызывается swap(p,q), то переменные а и b считаются синонимами р и q, и если меняются их величины, то изменятся и р и q. Но вызвать функцию в форме swap(3,5) уже не будет возможности, так как три и пять это постоянные числа, которые не могут быть синонимами переменных. Следует также заметить, что в языке С (не С++) не существовало таких понятий, как передать параметры по ссылке. Для реализации функции, подобной swap в примере выше, нужно было сообщать адреса переменных р и q, а собственно функцию следовало объявить следующим образом:

void swap(int a, int b)

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

Возврат массива в Си

Рассмотрим пример возвращения одномерного целочисленного массива. Данный способ основан на заполнении компонентов массива значениями, которые являются индексами массива. Входными данными является размер массива n.

Код. Автор24 — интернет-биржа студенческих работ

Рисунок 4. Код. Автор24 — интернет-биржа студенческих работ

Далее рассмотрим возврат двумерного массива вида dоublе из функции согласно этому способу GetDoubleArray().

Имеем в качестве исходных параметров объём массива m*n. Данный метод выполняет возврат массива.

Код. Автор24 — интернет-биржа студенческих работ

Рисунок 5. Код. Автор24 — интернет-биржа студенческих работ

Пример выполнения методики GetArrayChar(), генерирующей, то есть выполняющей возврат двумерного массива объектов типа Char.

Код. Автор24 — интернет-биржа студенческих работ

Рисунок 6. Код. Автор24 — интернет-биржа студенческих работ

Образец применения функции вызова GetArrayChar() из другого программного кода.

Код. Автор24 — интернет-биржа студенческих работ

Рисунок 7. Код. Автор24 — интернет-биржа студенческих работ

Дата написания статьи: 19.11.2019
Найди решение своей задачи среди 1 000 000 ответов
Крупнейшая русскоязычная библиотека студенческих решенных задач
Все самое важное и интересное в Telegram

Все сервисы Справочника в твоем телефоне! Просто напиши Боту, что ты ищешь и он быстро найдет нужную статью, лекцию или пособие для тебя!

Перейти в Telegram Bot