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

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

23.04.2012, 17:19. Показов 130442. Ответов 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
63 / 46 / 11
Регистрация: 27.12.2017
Сообщений: 1,484
28.01.2020, 17:18
Студворк — интернет-сервис помощи студентам
Azazel-San,
Цитата Сообщение от Azazel-San Посмотреть сообщение
void Foo(int(&A)[10]);
что за синтаксис? впервые такое вижу , зачем это нужно?
0
 Аватар для alexbmd
61 / 5 / 1
Регистрация: 03.06.2013
Сообщений: 355
Записей в блоге: 3
28.01.2020, 17:32
Цитата Сообщение от zayats80888 Посмотреть сообщение
Хто?
Как передать функции массив в качестве аргумента?

Добавлено через 4 минуты
Цитата Сообщение от ReYalp Посмотреть сообщение
зачем это нужно?
чтобы размер передать
https://www.cyberforum.ru/blog... g5798.html
0
28.01.2020, 17:32

Не по теме:

Цитата Сообщение от ReYalp Посмотреть сообщение
что за синтаксис? впервые такое вижу , зачем это нужно?
а такое видел?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
void*  (*Function(int) ) [10]
{
    return nullptr;
}
 
int main()
{
    typedef void * (*(*Fptr)(int) )[10];
    Fptr p = Function;
 
    void* (*a)[10] = p(0);
 
    return 0;
}
я чуть глаза с мозгами не сломал пока читал.

0
63 / 46 / 11
Регистрация: 27.12.2017
Сообщений: 1,484
28.01.2020, 17:36
_stanislav, тоже нет что это за синтаксис, если можно то подробнее? он используется где-то? Столько кода на С++ пересмотрел , а подобного не встречал)
0
28.01.2020, 17:40

Не по теме:

Цитата Сообщение от ReYalp Посмотреть сообщение
можно то подробнее
функция принимает int и возвращает указатель на массив из 10 указателей на void (и указатель на эту функцию соответственно). У Эккеля - Сложные определения и объявления.

0
63 / 46 / 11
Регистрация: 27.12.2017
Сообщений: 1,484
28.01.2020, 17:48
_stanislav,
Цитата Сообщение от _stanislav Посмотреть сообщение
void* (*Function(int) ) [10]
{
return nullptr;
}
что это такое? Похоже на создание указателя на функцию , но что тогда [10]? Это указывает что функция возвращает именно 10 элементов? и если это указатель на функцию то зачем писать тело функции?
0
Неэпический
 Аватар для Croessmah
18149 / 10731 / 2067
Регистрация: 27.09.2012
Сообщений: 27,038
Записей в блоге: 1
28.01.2020, 17:51
ReYalp, достаточно взглянуть, например, на std::begin и там оно используется, да еще и в шаблоне.
1
28.01.2020, 17:52

Не по теме:

Цитата Сообщение от ReYalp Посмотреть сообщение
Это указывает что функция возвращает именно 10 элементов? и если это указатель на функцию то зачем писать тело функции?
это код пустой, чистый пример, просто показать что все работает. суть кода объявить указатель на функцию и вызвать функцию через указатель, nullptr это простая заглушка.

0
28.01.2020, 17:54

Не по теме:

Цитата Сообщение от ReYalp Посмотреть сообщение
впервые такое вижу
Ты посты по диагонали читаешь?

0
63 / 46 / 11
Регистрация: 27.12.2017
Сообщений: 1,484
28.01.2020, 17:55
_stanislav,
Цитата Сообщение от _stanislav Посмотреть сообщение
void* (*Function(int) ) [10]
но в этом же месте указатель создается? зачем ему тело если это указатель

Добавлено через 37 секунд
zayats80888,

Не по теме:

я начал с 3й страницы

0
28.01.2020, 17:56

Не по теме:

Цитата Сообщение от alexbmd Посмотреть сообщение
а в качестве аргумента это - void Foo (int (&A)[10])
сам же писал скока то постов тому назад :)

0
63 / 46 / 11
Регистрация: 27.12.2017
Сообщений: 1,484
28.01.2020, 17:56
alexbmd,
Цитата Сообщение от alexbmd Посмотреть сообщение
чтобы размер передать
зачем так передавать размер? разве не лучше его в отдельную переменную запихнуть и передать указатель?
0
"C with Classes"
2022 / 1404 / 523
Регистрация: 16.08.2014
Сообщений: 5,885
Записей в блоге: 1
28.01.2020, 17:57
Цитата Сообщение от ReYalp Посмотреть сообщение
разве не лучше его в отдельную переменную запихнуть и передать указатель?
так в compile time размер будет передан.
1
63 / 46 / 11
Регистрация: 27.12.2017
Сообщений: 1,484
28.01.2020, 18:02
_stanislav, я так до сих пор и не понял зачем указателю на функцию тело?

Добавлено через 23 секунды
точнее zayats80888,
0
"C with Classes"
2022 / 1404 / 523
Регистрация: 16.08.2014
Сообщений: 5,885
Записей в блоге: 1
28.01.2020, 18:04
Цитата Сообщение от ReYalp Посмотреть сообщение
я так до сих пор и не понял зачем указателю на функцию тело?
указатель это же просто интерфейс к чему нибудь, будь то к функции или к объекту.

Добавлено через 16 секунд
сам по себе указатель бесполезен, тупая банальная ссылка
0
63 / 46 / 11
Регистрация: 27.12.2017
Сообщений: 1,484
28.01.2020, 18:07
_stanislav,
Цитата Сообщение от _stanislav Посмотреть сообщение
void* (*Function(int) ) [10]
{
return nullptr;
}
а что это такое вообще? Я вот совсем не могу понять , какой-то недо указатель?
0
 Аватар для zayats80888
6352 / 3523 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
28.01.2020, 18:07
Цитата Сообщение от ReYalp Посмотреть сообщение
зачем так передавать размер? разве не лучше его в отдельную переменную запихнуть и передать указатель?
Это для строгой типизации.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
void foo(int* arr, size_t size)
{   // хреновая функция, нет контроля на этапе компиляции
    for (size_t i = 0; i < size; ++i)
        arr[i] = 0;
}
 
void foo_ptr(int (*arr)[10])
{   // криво, но пойдет
    for (size_t i = 0; i < 10; ++i)
        *arr[i] = 0;
}
 
void foo_ref(int(&arr)[10])
{   // а так уже лучше
    for (size_t i = 0; i < 10; ++i)
        arr[i] = 0;
}
 
int main() {
    int arr10[10]{};
    int arr3[3]{};
 
    foo(arr10, 10);     // ok
    foo(arr3, 10);      // ок, но во время выполнения - порча стека
 
    foo_ptr(&arr10);    // ok
    foo_ptr(&arr3);     // не скомпилируется!
 
    foo_ref(arr10);     // ok, просто, понятно, безопасно
    foo_ref(arr3);      // не скомпилируется!
}
через шаблон же можно обрабатывать массив произвольного размера
1
"C with Classes"
2022 / 1404 / 523
Регистрация: 16.08.2014
Сообщений: 5,885
Записей в блоге: 1
28.01.2020, 18:08
Цитата Сообщение от ReYalp Посмотреть сообщение
а что это такое вообще?
это функция, которая возвращает указатель на массив из 10 указателей. е мае
0
 Аватар для zayats80888
6352 / 3523 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
28.01.2020, 18:09
del
0
63 / 46 / 11
Регистрация: 27.12.2017
Сообщений: 1,484
28.01.2020, 18:10
zayats80888, тоесть лучше писать
Цитата Сообщение от zayats80888 Посмотреть сообщение
int(&arr)[10]
чем
Цитата Сообщение от zayats80888 Посмотреть сообщение
int* arr, size_t size
? хм , спасибо

Добавлено через 31 секунду
_stanislav, если это функция зачем у нее перед именем *? и почему имя функции вообще взято в () тогда
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
28.01.2020, 18:10

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

Передать 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,...


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

Или воспользуйтесь поиском по форуму:
80
Ответ Создать тему
Новые блоги и статьи
Поиск всех путей на ориентированном графе. Linux
dcc0 02.07.2026
Переработка старого кода из моей статьи. Через несколько переработок от PHP кода к C89 (надеюсь, 89). Но довольно запутанно получилось. Код для Linux. Но если убрать time и то, что с ним. . .
Сам себя обучал rest api
anaschu 02.07.2026
Педагогический лайфхак: Почему чистый REST API для ученика намного круче, чем готовые библиотеки Когда мы отказались от капризного JAR-файла AnyLogic и переписали код на стандартный HttpClient,. . .
rest api anylogic - выполнение модели на своём русском сайте
anaschu 02.07.2026
Как подружиться с AnyLogic Cloud API, победить провайдеров и развернуться Java-бэкенд в Docker на бесплатном хостинге: Двухдневный лог борьбы Всем привет! Хочу поделиться свежим (и довольно. . .
Где деньги лежат
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
Алиса Калибровка параметров симбиотической модели: технический обзор Содержание: Введение Постановка проблемы Технические аспекты реализации Процесс внедрения изменений
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru