Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Pinokio
2 / 2 / 1
Регистрация: 14.09.2012
Сообщений: 83
#1

Как изменить значение переменной, переданной в списке с переменным числом аргументов - C++

26.08.2013, 18:00. Просмотров 838. Ответов 7
Метки нет (Все метки)

Помогите!!!
Начал изучать С++
Возникла такая проблема.
Когда мне нужно получить доступ к переменному числу аргументов я делаю что-то типа такого:
C++
1
2
3
4
5
6
7
8
9
10
11
double f(double a, ...){    
    va_list p;
    double sum = 0, count = 0;
    va_start(p,a);
    double k = a;
    do{
        sum+=k; count++;
    }while(k=va_arg(p, double));
    va_end(p);
    return ((sum)? sum/count:0);
}
А вот как можно изменить значения этих аргументов, чтобы выйдя из функции они имели другие значения???
У меня был вариант смещаться не на double, а на *double, а аргументы передавать так &i. но компилятор не пропустил.И как быть?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.08.2013, 18:00
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Как изменить значение переменной, переданной в списке с переменным числом аргументов (C++):

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

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

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

Функции с переменным числом аргументов
Ребята, подскажите пожалуйста, где можно обстоятельно и подробно прочитать про...

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

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

7
Nuclear_Razor
49 / 2 / 1
Регистрация: 22.07.2012
Сообщений: 104
Записей в блоге: 1
Завершенные тесты: 1
26.08.2013, 18:48 #2
C++
1
va_start(p,a);
А это что? Функция?
0
Убежденный
Ушел с форума
Эксперт С++
15941 / 7252 / 1176
Регистрация: 02.05.2013
Сообщений: 11,637
Записей в блоге: 1
Завершенные тесты: 1
26.08.2013, 19:31 #3
Цитата Сообщение от Nuclear_Razor Посмотреть сообщение
Как изменить значение переменной, переданной в списке с переменным числом аргументов
Передавайте указатели.
0
Croessmah
++Ͻ
14161 / 8086 / 1513
Регистрация: 27.09.2012
Сообщений: 19,926
Записей в блоге: 3
Завершенные тесты: 1
26.08.2013, 19:32 #4
Цитата Сообщение от Nuclear_Razor Посмотреть сообщение
А это что? Функция?
http://www.cplusplus.com/reference/cstdarg/va_start/
0
Убежденный
Ушел с форума
Эксперт С++
15941 / 7252 / 1176
Регистрация: 02.05.2013
Сообщений: 11,637
Записей в блоге: 1
Завершенные тесты: 1
26.08.2013, 19:35 #5
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
32
#include <iostream>
 
void func(int Count, ...)
{
    va_list VaList;
    va_start(VaList, Count);
 
    for (int i = 0; i < Count; ++i)
    {
        int *pArg = va_arg(VaList, int *);
        *pArg *= 10;
    }
 
    va_end(VaList);
}
 
 
 
int main()
{
    int a = 1;
    int b = 2;
    int c = 3;
 
    func(3, &a, &b, &c);
 
    std::cout << a << std::endl;
    std::cout << b << std::endl;
    std::cout << c << std::endl;
 
    return 0;
}
>10
>20
>30
1
Nuclear_Razor
49 / 2 / 1
Регистрация: 22.07.2012
Сообщений: 104
Записей в блоге: 1
Завершенные тесты: 1
26.08.2013, 19:47 #6
Croessmah, ооо! Спасибо за полезный источник)
0
Pinokio
2 / 2 / 1
Регистрация: 14.09.2012
Сообщений: 83
27.08.2013, 00:42  [ТС] #7
Спасибо, Понял теперь как надо)
0
Kuzia domovenok
2213 / 1982 / 444
Регистрация: 25.03.2012
Сообщений: 6,965
Записей в блоге: 1
27.08.2013, 15:14 #8
функции с переменном числом аргументов нафиг не нужны, если все аргументы одного типа.
Единственное применение этой фичи это разве что функции семейства printf
0
27.08.2013, 15:14
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.08.2013, 15:14
Привет! Вот еще темы с решениями:

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

Инициализация std::tuple переменным числом аргументов
Добрый вечер. Мне нужно инициализировать объект std::tuple, который является...

Функция с переменным числом аргументов (через шаблоны)
Доброго времени суток! Встал вопрос с реализацией такой функции. ...

Функция с переменным числом параметров находящая максимальный элемент в списке параметров
Написать функцию с переменным числом параметров:Максимальный из элементов в...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru