Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 25.03.2014
Сообщений: 23
1

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

26.09.2015, 16:42. Просмотров 1007. Ответов 5
Метки нет (Все метки)


Здравствуйте, возникла вот такая проблема: создаю функцию с переменным кол-ом параметров. Пример сделан мною по аналогии с учебника/интернета. Загвоздка в том, что цикл не останавливается после того, как к sum была прибавлена пятерка и дальше работает. По идеи параметров в стеке больше не осталось и p должно стать равно нулю, что должно привести к завершению работы цикла, но это моё скромное мнение, я в C++ не очень силён)) Прошу помочь =)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include "stdafx.h"
#include <iostream>
#include <conio.h>
using namespace std;
 
int fu (int a, ...)
{
    int *p=&a;
    int sum=0;
    while (*p)
    {
        sum += *p;
        p++;
    }
    return sum;
}
 
int _tmain(int argc, _TCHAR* argv[])
{
    cout << fu (1, 2, 3, 4, 5);
    getch();
    return 0;
}
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.09.2015, 16:42
Ответы с готовыми решениями:

Функция с переменным количеством параметров
Доброго времени суток! Я озадачился таким вопросом - как производится компиляция функций с...

Функция с переменным количеством параметров-оъектов
Нашел на форуме пример функции с переменным количеством int, подскажите как переписать ее для...

Функция суммы с переменным количеством параметров
На просторах форума нашёл код. Стало интересно посмотреть что выводят его отдельные части(отдельно...

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

__________________
Помогаю в написании курсовых работ и дипломов здесь.
Записывайтесь на профессиональные курсы C++ разработчиков
5
Эксперт С++
8412 / 3947 / 864
Регистрация: 15.11.2014
Сообщений: 8,894
26.09.2015, 16:46 2
Лучший ответ Сообщение было отмечено timrikcfc как решение

Решение

Цитата Сообщение от timrikcfc Посмотреть сообщение
cout << fu (1, 2, 3, 4, 5);
заменить на:
C++
1
 cout << fu (1, 2, 3, 4, 5, 0);
Добавлено через 1 минуту
Цитата Сообщение от timrikcfc Посмотреть сообщение
По идеи параметров в стеке больше не осталось и p должно стать равно нулю, что должно привести к завершению работы цикла
вы этот бред сами при думали?
или где то прочитали?

потому что если прочитали - в топку такую книгу.
а если придумали - могу лишь посоветовать сначала почитать книги,
тогда и сочинять ничего не придеццо.
1
Don't worry, be happy
16972 / 9853 / 1897
Регистрация: 27.09.2012
Сообщений: 24,436
Записей в блоге: 1
26.09.2015, 16:47 3
http://www.cplusplus.com/refer... /va_start/
1
Эксперт С++
8412 / 3947 / 864
Регистрация: 15.11.2014
Сообщений: 8,894
26.09.2015, 16:56 4
http://rextester.com/WDSB99475

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
#include <iostream>
#include <stdarg.h>     
 
void fu (int n, ...)
{
  va_list vl;
  va_start(vl,n);
    
  for (;;)
  {
    int val=va_arg(vl,int);
      
    if(val==0)
      break;
      
    std::cout<<"val = "<< val<<'\n';
      
      
  }
  va_end(vl);
  
}
 
 
int main()
{
    fu(1, 2, 3, 4, 5, 0);
}
1
0 / 0 / 0
Регистрация: 25.03.2014
Сообщений: 23
26.09.2015, 17:07  [ТС] 5
hoggy, Спасибо большое.
Цитата Сообщение от hoggy Посмотреть сообщение
вы этот бред сами при думали?
или где то прочитали?
потому что если прочитали - в топку такую книгу.
а если придумали - могу лишь посоветовать сначала почитать книги,
тогда и сочинять ничего не придеццо.
Видимо плохо разобрался и отчасти сочинил, а как правильно сформулировать?
0
Эксперт С++
8412 / 3947 / 864
Регистрация: 15.11.2014
Сообщений: 8,894
26.09.2015, 17:12 6
Цитата Сообщение от timrikcfc Посмотреть сообщение
а как правильно сформулировать?
см #3
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.09.2015, 17:12

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь или здесь.

Шаблон с переменным количеством параметров
У меня компилятор Visual Studio 2012, но не работает следующий код: #include &lt;iostream&gt;...

Функции с переменным количеством параметров в языке C ++
Реализовать функцию конкатенации (сцепления) произвольного количества C-строк с динамическим...

Разработать функцию с переменным количеством параметров
Функция должна вернуть наименьшее из введенных значений. #include &lt;iostream&gt; #include &lt;cstdlib&gt;...

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


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

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

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