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

Передача массива в функцию

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

Передача массива в функцию — это передача указателя на данный массив.

Определение функции

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

  1. Наименование числового массива.
  2. Адресация начального компонента массива.

Рассмотрим конкретный случай. Необходимо выполнить описание функционала SumArrаyInts(), который должен получить целочисленный массив и найти суммарный вес всех компонентов выбранного массива. Функция должна получить два параметра:

  1. Целочисленный массив.
  2. Количество компонентов в массиве.

Рассмотрим разные возможные варианты выполнения этой задачи. Вариант номер один. Массив передаётся в форме int А[].

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

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

Вариант номер два. Массив передаётся в форме int *А.

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

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

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

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

Передача символьной строки в функцию

Символьная строчка по сути является массивом компонентов с типом char. Это означает, что пересылать символьную строку в функцию посредством параметра, можно таким же образом, как и с целочисленными значениями. Символьную строчку возможно переслать в функцию так же двумя методами:

  1. В формате char*.
  2. В формате char[].

Рассмотрим пример. Функция, возвращающая количество плюсовых символов в строчке. Нет необходимости сообщать функции размер строки, так как существует признак окончания строчки и это символ ‘\0’.

Вариант номер один. Определяется функция GеtNРlus(). Строчка передаётся как chаr *.

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

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

Вариант номер два. Определяется функция GetNPlus2(). Для организации обращения к символике строчки применяется индексация.

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

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

Передача строкового массива в функцию

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

Передача строкового массива в функцию. Автор24 — интернет-биржа студенческих работ

Рисунок 5. Передача строкового массива в функцию. Автор24 — интернет-биржа студенческих работ

В приведённой выше функции применяется функционал strсm р(), который выполняет сравнение двух строчек s1 и s2 в порядке лексической графики: n = strсm р(s1. s2);

и возврат значения:

  1. $> 0$, если строчка s1 идёт за строчкой s2 в порядке лексической графики.
  2. $= 0$, если присутствует равенство строчек.

Вызывается функция из иного программного кода:

Программный код. Автор24 — интернет-биржа студенческих работ

Рисунок 6. Программный код. Автор24 — интернет-биржа студенческих работ

Трансляция двумерного массива в функцию

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

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

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

Вызывается функция из кода программы. Осуществляется пересылка в функцию двумерного массива, именуемого М и имеющего размер два на три.

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

Рисунок 8. Пересылка. Автор24 — интернет-биржа студенческих работ

Передача трёхмерного числового массива в функцию

Рассмотрим пример передачи трёхмерного числового массива в функцию. В этом примере даётся описание функции Sum3(), получающей в качестве исходных параметров трёхмерный целочисленный массив, величиной два на три на четыре. Функция выполняет возврат суммы всех компонентов массива.

Передача трёхмерного числового массива в функцию. Автор24 — интернет-биржа студенческих работ

Рисунок 9. Передача трёхмерного числового массива в функцию. Автор24 — интернет-биржа студенческих работ

Передача структуры в функцию

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

  1. По смыслу (значению).
  2. По адресному значению.

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

  1. Без возможности управления (*).
  2. С возможностью управления (^). В данном случае структура может быть объявлена при помощи контрольного слова.

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

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

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

И существуют две функции, определяющие равенство точек друг с другом:

  1. Функция Equals(), получающая в параметрическом виде две структуры вида MyPoint (передаваемые значением).
  2. Функция EqualsP(), получающая два указателя вида MyPoint (передаваемые адресом).

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

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

В этом случае обращение к функциям Equals() и EqualsP() возможно выполнить из иного кода программы в таком виде:

Обращение к функциям. Автор24 — интернет-биржа студенческих работ

Рисунок 12. Обращение к функциям. Автор24 — интернет-биржа студенческих работ

Рассмотрим пример передачи в функцию структурного указателя по типу ссылки с возможностью управления. В этом примере показана пересылка в функцию указателя на структуру с возможностью управления. В функции EqualsPRef() предоставлены два структурных указателя с возможностью управления вида MyPoint. Функция должна определить равны ли поля указанных структур. Указатель MyPoint описывается в таком виде:

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

Рисунок 13. Указатель. Автор24 — интернет-биржа студенческих работ

Функция EqualsPRef() задаётся с помощью этой программы:

Функция EqualsPRef().Автор24 — интернет-биржа студенческих работ

Рисунок 14. Функция EqualsPRef().Автор24 — интернет-биржа студенческих работ

Функция EqualsPRef() вызывается из иного кода программы (к примеру, программы обработки нажатия кнопки):

Функция EqualsPRef().Автор24 — интернет-биржа студенческих работ

Рисунок 15. Функция EqualsPRef().Автор24 — интернет-биржа студенческих работ

Передача функции в виде параметра класса объекта

Имеем класс MyPointClass, который описывает координаты точки в плоскости. Он определяется двумя модулями:

  1. MyPointClass.h содержит характеристики функций и полей класса.
  2. MyPointClass.cpp содержит описания построения способов и полей класса.

Текстовый вариант модуля MyPointClass.h приведён ниже:

Текстовый вариант модуля MyPointClass. Автор24 — интернет-биржа студенческих работ

Рисунок 16. Текстовый вариант модуля MyPointClass. Автор24 — интернет-биржа студенческих работ

Текстовый вариант модуля MyPointClass.cpp:

Текстовый вариант модуля MyPointClass.cpp. Автор24 — интернет-биржа студенческих работ

Рисунок 17. Текстовый вариант модуля MyPointClass.cpp. Автор24 — интернет-биржа студенческих работ

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

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

Перейти в Telegram Bot