Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.63/697: Рейтинг темы: голосов - 697, средняя оценка - 4.63
0 / 0 / 0
Регистрация: 13.02.2011
Сообщений: 23

Как передать функции массив в качестве аргумента?

23.04.2012, 17:19. Показов 130438. Ответов 96
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет! Подскажите, как передать функции массив в качестве аргумента? И как сделать, чтобы функция возвращала массив?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
23.04.2012, 17:19
Ответы с готовыми решениями:

Как в качестве аргумента функции передать массив?
Доброго времени суток! Расскажите, пожалуйста, если не затрудняет, как в качестве аргумента функции передать массив? Функция должна...

Вызов родовой функции (нужно передать массив в качестве аргумента функции через указатель)
#include <iostream> using namespace std; template <class T1> class mas { public: T1 n; T1 a; void input() ...

Как передать функции указатель на функцию в качестве аргумента?
как передать функции указатель на функцию в качестве аргумента?

96
"C with Classes"
2022 / 1404 / 523
Регистрация: 16.08.2014
Сообщений: 5,885
Записей в блоге: 1
28.01.2020, 18:16
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от ReYalp Посмотреть сообщение
если это функция зачем у нее перед именем *? и почему имя функции вообще взято в () тогда
это нужно для того что бы вернуть указатель на массив из 10 куазателей, а почему все так сложно, я думаю значит есть какие то серьезные ограничения (для лексического разбора языковых конструкций) раз по другому (по проще) нельзя. хочешь понять по настоящему почему так бывает, напиши свой лексер для C++ кода. лично я до конца не понимаю, почему такие страшные конструкции у C++ бывают.
0
63 / 46 / 11
Регистрация: 27.12.2017
Сообщений: 1,484
28.01.2020, 18:18
zayats80888,
Цитата Сообщение от zayats80888 Посмотреть сообщение
void foo(int* arr, size_t size)
{ // хреновая функция, нет контроля на этапе компиляции
for (size_t i = 0; i < size; ++i)
arr[i] = 0;
}
а чем плоха такая функция? что может пойти не так?
0
 Аватар для zayats80888
6352 / 3523 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
28.01.2020, 18:21
Цитата Сообщение от ReYalp Посмотреть сообщение
тоесть лучше писать
для обработки статических массивов - да, лучше
Для массивов в куче такое не прокатит. Однако заметь, что для них написали обертку (std::vector)

Добавлено через 40 секунд
Цитата Сообщение от ReYalp Посмотреть сообщение
а чем плоха такая функция? что может пойти не так?
посмотри второй вызов в моём примере
0
63 / 46 / 11
Регистрация: 27.12.2017
Сообщений: 1,484
28.01.2020, 18:24
zayats80888,
Цитата Сообщение от zayats80888 Посмотреть сообщение
посмотри второй вызов в моём примере
но я не понял идеи, по логике Вы должны были передать на место размера 3 , а не 10.
0
 Аватар для zayats80888
6352 / 3523 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
28.01.2020, 18:26
Цитата Сообщение от ReYalp Посмотреть сообщение
но я не понял идеи, по логике Вы должны были передать на место размера 3 , а не 10.
Да, но эту ошибку ты не отследишь на этапе компиляции
0
Эксперт С++
 Аватар для hoggy
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
28.01.2020, 18:26
Цитата Сообщение от ReYalp Посмотреть сообщение
int(&arr)[10]
всегда лучше, но не всегда возможно.

лучше, потому что безопаснее.
безопаснее, потому что инвариантно.
инвариантно, потому что количество элементов гарантированно правильное.

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

Цитата Сообщение от ReYalp Посмотреть сообщение
int* arr, size_t size
всегда отвратительно, зато всегда возможно.

всегда возможно, потому что указатель и количество элементов
всегда можно подсунуть времени выполнения.

отвратительно, потому что не безопасно, и что самое ужассное - не инвариантно.

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

и нет никакой возможности провалидировать значения входных аргументов.
3
63 / 46 / 11
Регистрация: 27.12.2017
Сообщений: 1,484
28.01.2020, 18:30
hoggy, но если размер который придет в функцию заранее неизвестен ни вызывающему ни самой функции то в таком случае
Цитата Сообщение от hoggy Посмотреть сообщение
int* arr, size_t size
это единственный выход?

Добавлено через 2 минуты
zayats80888, а насчет той функции которая возвращает 10 элементов, можно пример с ней пожалуйста? Хоть самый простой. *перед именем значит что вернется указатель на указатель? [] Перед телом функции указывает явно сколько элементов вернется? Ни больше ни меньше нельзя?
0
 Аватар для zayats80888
6352 / 3523 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
28.01.2020, 18:34
Цитата Сообщение от ReYalp Посмотреть сообщение
а насчет той функции которая возвращает 10 элементов, можно пример с ней пожалуйста? Хоть самый простой. *перед именем значит что вернется указатель на указатель?
я нигде в последних постах не писал функции, которые что то возвращают
???
0
"C with Classes"
2022 / 1404 / 523
Регистрация: 16.08.2014
Сообщений: 5,885
Записей в блоге: 1
28.01.2020, 18:36

Не по теме:

Цитата Сообщение от zayats80888 Посмотреть сообщение
я нигде в последних постах не писал функции, которые что то возвращают
я писал https://www.cyberforum.ru/post14210049.html

0
63 / 46 / 11
Регистрация: 27.12.2017
Сообщений: 1,484
28.01.2020, 18:36
_stanislav, zayats80888, да , я опять перепутал , так можно пример?
0
Эксперт С++
 Аватар для hoggy
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
28.01.2020, 18:38
Цитата Сообщение от ReYalp Посмотреть сообщение
это единственный выход?
см раздел "Containers"
0
63 / 46 / 11
Регистрация: 27.12.2017
Сообщений: 1,484
28.01.2020, 18:42
hoggy, тоесть (pointer,size) это худший из возможных вариантов?
0
"C with Classes"
2022 / 1404 / 523
Регистрация: 16.08.2014
Сообщений: 5,885
Записей в блоге: 1
28.01.2020, 18:43
Цитата Сообщение от ReYalp Посмотреть сообщение
так можно пример?
примера нет.
успокойся, ты такого в жизни больше не увидишь, а если и увидишь то потом сам разберешься
0
63 / 46 / 11
Регистрация: 27.12.2017
Сообщений: 1,484
28.01.2020, 19:00
_stanislav, я не могу успокоится пока не разберусь) хотя бы ответы на вопросы дайте, без примера
0
"C with Classes"
2022 / 1404 / 523
Регистрация: 16.08.2014
Сообщений: 5,885
Записей в блоге: 1
28.01.2020, 19:04
Цитата Сообщение от ReYalp Посмотреть сообщение
я не могу успокоится пока не разберусь) хотя бы ответы на вопросы дайте, без примера
я это прочитал в книге, Сложные определения и объявления стр. 155.
1
 Аватар для alexbmd
61 / 5 / 1
Регистрация: 03.06.2013
Сообщений: 355
Записей в блоге: 3
29.01.2020, 14:13
Цитата Сообщение от zayats80888 Посмотреть сообщение
int arr3[3]{};
а зачем {} ?

это так мы его забиваем нулями ?
0
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
29.01.2020, 14:23
Цитата Сообщение от alexbmd Посмотреть сообщение
это так мы его забиваем нулями ?
да.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
29.01.2020, 14:23

Нюансы работы с массивами: как правильно передать массив в функцию в качестве аргумента?
Здравствуйте!!!Начал недавно изучать с++ и с по книге!!!там есть пример и возник небольшой вопрос к нему!Скину весь код, чтобы было...

Передать std::vector в качестве аргумента функции
Задание: определить моду чисел из массива. Вот код: #include &lt;iostream&gt; #include &lt;vector&gt; int mod_a(int, vector&lt;int&gt;); ...

Как передать массив структур в функцию в качестве параметра, чтобы изменения в функции меняли исходный массив?
Допустим есть структура struct Base { int a; int b; int c; }; В основном методе main() объявим массив...

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

Передача функции в качестве аргумента массив
Помогите пожалуйста! есть некая рекурсивная функция N которая принимает 2 целочисленные переменные и массив; void N(int, int,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
97
Ответ Создать тему
Новые блоги и статьи
Где деньги лежат
kumehtar 02.07.2026
Это - японская подводная лодка I-52 (тип C2, кодовое имя Momi) вышла из Японии в марте 1944 года с миссией в оккупированную немцами Францию (Лорьян). Это была одна из «Янаги»-миссий по обмену. . .
Krabik для WoW 3.3.5a, многоязычный
AmbA 02.07.2026
Допилил бота, думаю что окончательно. Изменения: - добавлена многоязычность - добавлено снятие скриншотов - добавлено поддержание бафов хождения по воде (для жреца, дк и шамана) - и так, по. . .
Алиса нашла кучу ошибок компиляции и запуска в проекте, который без проблем компилировался и запускался)))
anaschu 30.06.2026
Я пока посмеюся, но завтра проверю. А вообще интерсно. Дал алисе файл, в котором точно нет ошибок компиляции и запуска, и попросил их найти. Нашла кучу))) Критические ошибки, мешающие компиляции и. . .
сукцессия 16. Общий обзор, в основном что бы другие ии поняли
anaschu 29.06.2026
# Передаточный документ: модель микоризной сукцессии (для нового чата) Этот документ предназначен для того, чтобы новый чат Claude мог продолжить работу без необходимости заново разбираться в. . .
сукцессия 15 неявная схема
anaschu 29.06.2026
Алиса Калибровка параметров симбиотической модели: технический обзор Содержание: Введение Постановка проблемы Технические аспекты реализации Процесс внедрения изменений
сукцессия 14. Обновленная схема модели
anaschu 28.06.2026
ГЛОБАЛЬНАЯ ОПИСАТЕЛЬНАЯ СПЕЦИФИКАЦИЯ ЭКОСИСТЕМНОЙ МОДЕЛИ «SOIL CHEMISTRY & MYCORRHIZA 2. 0» https:/ / ibb. co/ NnkGpfMd Представленная интегрированная схема описывает непрерывную нелинейную. . .
сукцессия 13. Питон модель трехзонного мицелия, пока что в основном арбускулярного
anaschu 28.06.2026
## Разработка агентной модели микоризной сукцессии: от выявления артефактов к созданию комплексной системы ### Аннотация Представлено исследование по разработке агентной модели микоризной. . .
сукцессия 12. краткий список проверок модели перед запуском.
anaschu 27.06.2026
Скрытые отказы в моделях систем динамики (SD-models) экологических систем: два случая из практики Контекст Разбирался прототип модели систем динамики (SD-модели) микоризной сукцессии: пять. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru