Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/9: Рейтинг темы: голосов - 9, средняя оценка - 4.67
-1 / 25 / 4
Регистрация: 27.11.2017
Сообщений: 375

Функции с переменным числом аргументов

28.11.2017, 19:35. Показов 2254. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Ребята, подскажите пожалуйста, где можно обстоятельно и подробно прочитать про использовании в C++ функций с несколькими аргументами.
Интересуют такие штуки, как va_list, va_start, va_end и тому подобное.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
28.11.2017, 19:35
Ответы с готовыми решениями:

Функции с переменным числом аргументов
на пример sum(2,56,515,-23.65,548)?

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

Шаблон с переменным числом аргументов, и возвращаемое значение функции
Здравствуйте! Использую С++11. Хочу возвращать элементы кортежа пытаюсь так, auto Deserialize(unsigned long long i) ->...

13
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
28.11.2017, 19:43
http://www.cplusplus.com/reference/cstdarg/
0
-1 / 25 / 4
Регистрация: 27.11.2017
Сообщений: 375
28.11.2017, 21:43  [ТС]
Там очень мало и невнятно.
Пока что понял, что не совсем с переменным числом параметров такая функция может быть.
По крайней мере один аргумент должен присутствовать или же это не так?
Грубо говоря, возможно ли через вот эти VA прибабахи, правильно обработать вот такую функцию:

C++
1
int func(...)
Добавлено через 5 минут
И еще, я так понял, что такие функции проектируются, исходя из однотипности списка передаваемых им аргументов.
То есть, даже эти VA прибабахи не способны правильно обработать вызов такой функции, если одним из аргументов будет char, а другим double.
Правильно ли я понимаю или же нет.
И вообще как современный C++ рассматривает такие функции, как пережиток, ну типа как ключевое слово register, от которого вот-вот откажутся, или же как вполне ходовую штуку.
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
28.11.2017, 21:50
Цитата Сообщение от Просто Саша Посмотреть сообщение
возможно ли через вот эти VA прибабахи, правильно обработать вот такую функцию
Насколько я знаю, нет.
Цитата Сообщение от Просто Саша Посмотреть сообщение
если одним из аргументов будет char, а другим double
Тип может быть любой. printf() же любые параметры берёт.
0
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,531
Записей в блоге: 1
28.11.2017, 21:54
Просто Саша, а нафиг они нужны-то? В си++ есть и полиморфизм и перегрузка операторов и шаблоны и много всякой фигни! Я осмелюсь утверждать, что если тебе в программе понадобились VA прибабах, то ты явно не теми методами решаешь свою задачу, а она на самом деле имеет более простое решение.

Итак, внимание вопрос. Что у тебя за задача?
0
-1 / 25 / 4
Регистрация: 27.11.2017
Сообщений: 375
28.11.2017, 22:00  [ТС]
Да задача то у меня состоит в том, чтобы описать методику работы с функциями с переменным числом аргументов.

Добавлено через 4 минуты
Грубо говоря в C++ такого нет, что передаешь в функцию переменное число аргументов, а эта функция теми или иными способами должны:
1) Узнать количиство переданных аргументов
2)Для каждого переданного аргумента по его порядковому номеру определить его тип.

Я правильно понимаю?
0
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,531
Записей в блоге: 1
28.11.2017, 22:02
Да это так.
0
-1 / 25 / 4
Регистрация: 27.11.2017
Сообщений: 375
28.11.2017, 22:20  [ТС]
Ну так вот я и хочу найти какой-нибудь учебник, где четко и ясно говорилось, что на самом деле не совсем с произвольным, а по крайней мере с одним обязательным аргументом, откуда (ну это уже будет дальше сказано), вот VA штуки и берут эти аргументы, но только чтобы все это было приведено в какую-то цельную систему, а так пока читаешь, то просто какие-то отдельные куски информации, а цельной картины никто не дает.
0
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,531
Записей в блоге: 1
28.11.2017, 22:26
Потому что как я уже выше сказал, для обучения эти штуки не нужны.
1
-1 / 25 / 4
Регистрация: 27.11.2017
Сообщений: 375
28.11.2017, 22:35  [ТС]
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
Потому что как я уже выше сказал, для обучения эти штуки не нужны.
Ну это слишком просто.
Мне нужно вот реферат типа краткого сообщения по этой теме, и в нем я не смогу просто вот так написать, что мол для обучения эти штуки не нужны.

Добавлено через 3 минуты
И кстати вот ещё тоже такой вопрос.
В C++ возможно определние функций вот с таким прототипом

C++
1
int func(...);
Определить их можно. Можно что-то вернуть из них, но в чем их польза, если мы не можем получить доступ к их аргументам?
0
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,531
Записей в блоге: 1
28.11.2017, 22:39
Ну окей, для доклада нужны, но совсем без начальных аргументов f(...) типа, ты её не применишь. Так и скажи.

Добавлено через 2 минуты
. Можно что-то вернуть из них, но в чем их польза, если мы не можем получить доступ к их аргументам?
в си много способов выстрелить себе в ногу. Не обязательно во. Всём искать пользу!
0
-1 / 25 / 4
Регистрация: 27.11.2017
Сообщений: 375
28.11.2017, 22:48  [ТС]
Вот ты скажи лучше, вот такое начало реферата потянет?

В языке программирования C++ имеется возможность определять функции с переменным числом аргументов. Это означает, что и одна и та же функция может отрабатывать как три, так и четыре, и более аргументов. Переменное число аргументов – это звучит слишком громко и весьма самонадеянно. Чтобы такая функция была хоть как-то полезна, в ней должны быть предусмотрены обычные аргумента, по крайней мере один обычный аргумент. Вот именно такой класс функций, в которых имеется по крайней мере один обычный аргумент, указываемый явно в определении мы и будем называть функциями с переменным числом аргументов, а функции, в которых такого явно определённого аргумента нет, мы просто назовём побочным продуктом создания компиляторов.

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

Я дальше планирую развить эту тему и очень конкретно и вдумчиво описать, ну пусть на элементарном уровне студента.
0
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,531
Записей в блоге: 1
28.11.2017, 23:05
норм, чё!
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
28.11.2017, 23:40
Эти функции скорее к C относятся. А в C++ многоточие в шаблоне.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
28.11.2017, 23:40
Помогаю со студенческими работами здесь

Шаблоны с переменным числом аргументов
Написал шаблон функции с переменным числом аргументов которая считает сумму своих аргументов. Практики по этому вопросу не имею, поэтому...

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

Шаблонная функция с переменным числом аргументов
Сабж. Каким образом можно запретить использование шаблонной функции, если тип одного из аргументов не соответствует требуемому? Есть...

Рекурсивная функция с переменным числом аргументов на С++98
Добрый день! Столкнулся с проблемой построения иерархического дерева, состоящего из указателей на абстрактные элементы. Хотелось бы...

Функция с переменным числом аргументов (через шаблоны)
Доброго времени суток! Встал вопрос с реализацией такой функции. template<typename... Args> returntype functionname(const...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru