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

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

28.11.2017, 19:35. Показов 2185. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка. Рецензия / Мнение/ Перевод https:/ / **********/ gallery/ thinkpad-x220-tablet-porn-gzoEAjs . . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru