0 / 0 / 0
Регистрация: 05.10.2014
Сообщений: 14

Запись по ссылке или указателю в аргументы функции через макрос va_arg

27.02.2017, 22:36. Показов 1773. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте! Есть функция, принимающая переменное число аргументов. Нужно, чтобы переменные из main передавались в функцию по ссылке, и в моей функции им присваивались значения. Как это сделать через макрос va_arg? Можно ли вообще в аргументы, которых переменное число, передавать данные по ссылке?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
void my_sscanf(char *src, char *format, ...)
{
    va_list marker;
    va_start(marker, format);
        //[U]va_arg(marker, int) = 3; //не сработает, значение икс не изменится [/U]
        int test = va_arg(marker, int);
        cout << test; //не работает, выдаст какое-то большое число
}
 
int main(void)
{
    int x = 5;
 
    char *teststr = "205.301 Privet";
        char *testformat = "ssss";
 
 
    my_sscanf(teststr, testformat, &x);
 
    system("pause");
    return 0;
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
27.02.2017, 22:36
Ответы с готовыми решениями:

Передача по ссылке или по указателю
Класс А здесь минимальный в реальности у него много переменных. Как лучше поступить в таком случае? Удобнее выпольнить передачу по ссылке,...

Передача по ссылке или указателю?
В каких случаях лучше передавать в функцию ссылки, а в каких указатели?

Передача массива по ссылке или указателю
нужно передать массив по ссылке/указателю так, чтобы функция получила копию объекта #include &lt;stdio.h&gt; void myfunc(int...

3
284 / 232 / 114
Регистрация: 07.09.2016
Сообщений: 584
27.02.2017, 23:10
эллипсисы из си пришли. там ссылок не было. поэтому врятли эти штуки понимают ссылки. указатели передавать можно. в вашем примере вы так и сделали. потом значение указателя преобразовали в инт и получили что-то большое, адрес какой-то ячейки памяти, а не то, что в ней.
0
0 / 0 / 0
Регистрация: 05.10.2014
Сообщений: 14
27.02.2017, 23:29  [ТС]
Хорошо, ссылки не используем.
Но можно ли из моей функции обратиться указателю, к переданному в переменных аргументах , и изменить то, на что он указывает ?
0
Любитель чаепитий
 Аватар для GbaLog-
3744 / 1800 / 566
Регистрация: 24.08.2014
Сообщений: 6,018
Записей в блоге: 1
28.02.2017, 06:28
Цитата Сообщение от xenn Посмотреть сообщение
Хорошо, ссылки не используем.
А зря.
http://rextester.com/QND87337
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
//g++  5.4.0
 
#include <iostream>
#include <tuple>
#include <functional>
 
template<typename... Args>
void foo(std::tuple<Args&...>&& args)
{
    std::get<0>(args) = 10;
}
 
int main()
{
    std::cout << "Hello, world!\n";
    
    int n = 1;
    foo(std::make_tuple(std::ref(n)));
    std::cout << n << '\n';
}
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
28.02.2017, 06:28
Помогаю со студенческими работами здесь

Передача в функцию по ссылке или указателю
Гуру C++, как предпочтительнее делать?:) void f1(int &amp;a) { a = 5; } void f2(int * a) {

Передача параметров в функцию по значению, по ссылке или по указателю
Передача параметров в функцию по значению, по ссылке или по указателю. Чем отличаются эти 3 способа. И, если не сложно, привести...

Передача параметров функции по значению, ссылке и указателю
Вычислить F=f(a)-5f^3(sin(b/2))+1/f(1+c^4), де f(x)=3x^2-2x^2+7, при a=5.08, b=-0.65, c=3.87 Добавлено через 45 минут #include...

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

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


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

Новые блоги и статьи
Введение в Q# - язык квантовых вычислений от Microsoft
EggHead 19.05.2025
Microsoft вошла в гонку технологических гигантов с собственным языком программирования Q#, специально созданным для разработки квантовых алгоритмов. Но прежде чем погружаться в синтаксические дебри. . .
Безопасность Kubernetes с Falco и обнаружение вторжений
Mr. Docker 18.05.2025
Переход организаций к микросервисной архитектуре и контейнерным технологиям сопровождается лавинообразным ростом векторов атак — от тривиальных попыток взлома до многоступенчатых кибератак, способных. . .
Аугментация изображений с Python
AI_Generated 18.05.2025
Собрать достаточно большой датасет для обучения нейронной сети — та ещё головная боль. Часами вручную размечать картинки, скармливать их ненасытным алгоритмам и молиться, чтобы модель не сдулась при. . .
Исключения в Java: советы, примеры кода и многое другое
Javaican 18.05.2025
Исключения — это объекты, созданные когда программа сталкивается с непредвиденной ситуацией: файл не найден, сетевое соединение разорвано, деление на ноль. . . Список можно продолжать до бесконечности. . . .
Как сделать SSO (Single Sign-On) в C# приложении
stackOverflow 18.05.2025
SSO — это механизм, позволяющий пользователю пройти аутентификацию один раз и получить доступ к нескольким приложениям без повторного ввода учетных данных. Вы наверняка сталкивались с ним, когда. . .
Kubernetes с Apache Flink для обработки данных в реальном времени
Mr. Docker 17.05.2025
Kubernetes — это целая философия управления распределёнными приложениями. В отличие от "примитивных" решений вроде Docker Swarm, K8s (как его ласково называют в тусовке DevOps-инженеров) предлагает. . .
Использование декораторов в Python
py-thonny 17.05.2025
Если вы когда-нибудь задумывались о том, как красиво расширить функциональность кода без лишней возни и дублирования, декораторы в Python — та самая волшебная палочка, которую вы искали. По сути, это. . .
Реализация многопоточных сетевых серверов на Python
py-thonny 16.05.2025
Когда сталкиваешься с необходимостью писать высоконагруженные сетевые сервисы, выбор технологии имеет критическое значение. Python, со своей элегантностью и высоким уровнем абстракции, может. . .
C# и IoT: разработка Edge приложений с .NET и Azure IoT
UnmanagedCoder 16.05.2025
Мир меняется прямо на наших глазах, и интернет вещей (IoT) — один из главных катализаторов этих перемен. Если всего десять лет назад концепция "умных" устройств вызывала скептические улыбки, то. . .
Гибридные квантово-классические вычисления: Примеры оптимизации
EggHead 16.05.2025
Гибридные квантово-классические вычисления — это настоящий прорыв в подходах к решению сложнейших вычислительных задач. Представьте себе союз двух разных миров: классические компьютеры, с их. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru