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

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

27.02.2017, 22:36. Показов 1657. Ответов 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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.02.2017, 22:36
Ответы с готовыми решениями:

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

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

Передача массива по ссылке или указателю
нужно передать массив по ссылке/указателю так, чтобы функция получила копию объекта #include...

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

3
284 / 232 / 114
Регистрация: 07.09.2016
Сообщений: 584
27.02.2017, 23:10 2
эллипсисы из си пришли. там ссылок не было. поэтому врятли эти штуки понимают ссылки. указатели передавать можно. в вашем примере вы так и сделали. потом значение указателя преобразовали в инт и получили что-то большое, адрес какой-то ячейки памяти, а не то, что в ней.
0
0 / 0 / 0
Регистрация: 05.10.2014
Сообщений: 14
27.02.2017, 23:29  [ТС] 3
Хорошо, ссылки не используем.
Но можно ли из моей функции обратиться указателю, к переданному в переменных аргументах , и изменить то, на что он указывает ?
0
Любитель чаепитий
3742 / 1798 / 566
Регистрация: 24.08.2014
Сообщений: 6,016
Записей в блоге: 1
28.02.2017, 06:28 4
Цитата Сообщение от 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
28.02.2017, 06:28
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.02.2017, 06:28
Помогаю со студенческими работами здесь

Передача параметров в функцию по значению, по ссылке или по указателю
Передача параметров в функцию по значению, по ссылке или по указателю. Чем отличаются эти 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 ...

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

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


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru