Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 30, средняя оценка - 5.00
Noname2512
4 / 4 / 1
Регистрация: 25.06.2010
Сообщений: 106
#1

Как сделать выходные параметры у функции? - C++

26.01.2011, 20:13. Просмотров 3959. Ответов 9
Метки нет (Все метки)

мне нужно чтобы переменная s сохраняла свое значение после работы функции(которая на самом деле процедура, токо я не знал как по другому сделать)) )
C++
1
2
3
4
5
6
void MyFirst(double x,double y,double z,double s)
{
    double p;
    p=(x+y+z)/2;
    s=sqrt( p*(p-x)*(p-y)*(p-z) );
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.01.2011, 20:13     Как сделать выходные параметры у функции?
Посмотрите здесь:

C++ определение функции в ЗАГОЛОВОЧНОМ файле. В основном предполагается переопределение ТЕЛА этой функции. Как это сделать, не правя хидер?
C++ Как вызвать из 1 функции параметры другой?
C++ Какими способами можно использовать функции класса B, как параметры функции Sub класса А?
Выходные параметры библиотечной функции C++
C++ Вычисление интергала, но входные данные сначала считываются из файла, а выходные наоборот в него записываются. Подскажите пожалуйста как это сделать
Массивы и функции как параметры C++
Вычислить суммы с данной точностью е, используя указатели на функции, как параметры C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
VenCarbon
32 / 31 / 3
Регистрация: 14.12.2010
Сообщений: 158
26.01.2011, 20:16     Как сделать выходные параметры у функции? #2
Цитата Сообщение от Noname2512 Посмотреть сообщение
void MyFirst(double x,double y,double z,double &s)
{
double p;
p=(x+y+z)/2;
s=sqrt( p*(p-x)*(p-y)*(p-z) );
}
попробуй так.
silent_1991
Эксперт С++
4952 / 3028 / 149
Регистрация: 11.11.2009
Сообщений: 7,026
Завершенные тесты: 1
26.01.2011, 20:17     Как сделать выходные параметры у функции? #3
1-й вариант (работает как в Си, так и в Си++)

Описание:
C++
1
2
3
4
5
6
void MyFirst(double x,double y,double z,double *s)
{
        double p;
        p=(x+y+z)/2;
        *s=sqrt( p*(p-x)*(p-y)*(p-z) );
}
Вызов:
C++
1
MyFirst(x, y, z, &s);
2-й вариант (работает только в Си++)

Описание:
C++
1
2
3
4
5
6
void MyFirst(double x,double y,double z,double &s)
{
        double p;
        p=(x+y+z)/2;
        s=sqrt( p*(p-x)*(p-y)*(p-z) );
}
Вызов:
C++
1
MyFirst(x, y, z, s);
NiRamz
211 / 211 / 16
Регистрация: 26.12.2010
Сообщений: 691
26.01.2011, 20:18     Как сделать выходные параметры у функции? #4
C++
1
2
3
4
5
6
7
double MyFirst(double x,double y,double z,double s)
{
        double p;
        p=(x+y+z)/2;
        s=sqrt( p*(p-x)*(p-y)*(p-z) );
        return s;
}
Noname2512
4 / 4 / 1
Регистрация: 25.06.2010
Сообщений: 106
10.08.2011, 13:02  [ТС]     Как сделать выходные параметры у функции? #5
а если мне надо массив чисел сохранить
я попробовал написать
C++
1
int fn (int a, int  &r[3] ) {}
а он ругается :
'r' : arrays of references are illegal
Даня98
28 / 28 / 8
Регистрация: 13.02.2010
Сообщений: 145
10.08.2011, 13:08     Как сделать выходные параметры у функции? #6
С с++ когда объявляется массив в аргументах функии на него автоматически создается ссылка. (&) Поэтому, все изменения массива в функции изменяют сам массив а не его копию.
Olga_
840 / 182 / 16
Регистрация: 01.08.2011
Сообщений: 502
10.08.2011, 13:08     Как сделать выходные параметры у функции? #7
Цитата Сообщение от Noname2512 Посмотреть сообщение
а если мне надо массив чисел сохранить
я попробовал написать
C++
1
int fn (int a, int  &r[3] ) {}
а он ругается :
'r' : arrays of references are illegal
C++
1
int fn (int a, int  r[3] ) {}
Вызов
C++
1
fn(a, r)
Даня98
28 / 28 / 8
Регистрация: 13.02.2010
Сообщений: 145
10.08.2011, 13:12     Как сделать выходные параметры у функции? #8
И еще после объявления массива обычно указывается переменная, отвечающая за его размер.
Olga_
840 / 182 / 16
Регистрация: 01.08.2011
Сообщений: 502
10.08.2011, 13:16     Как сделать выходные параметры у функции? #9
Цитата Сообщение от Даня98 Посмотреть сообщение
И еще после объявления массива обычно указывается переменная, отвечающая за его размер.
Пример

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
int Sum(int *a, int n)
{
   int i, s = 0;
   for (i = 0; i < n; i++)
      s += a[i];
   return s;
}
 
int main()
{
   int a[5] = {0,1,2,3,4};
   printf("%d\n", Sum(a, 5));
   return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.08.2011, 20:11     Как сделать выходные параметры у функции?
Еще ссылки по теме:

C++ Чтение из файла, название передано как параметры функции main argc & argv
Как сделать чтобы программа отображала входные параметры самостоятельно C++
Как работают приведенные функции, какие у них параметры? C++
Как задать параметры запуска (аргументы командной строки) функции main? C++
C++ Как получились выходные данные?

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

Или воспользуйтесь поиском по форуму:
Сыроежка
Заблокирован
10.08.2011, 20:11     Как сделать выходные параметры у функции? #10
Цитата Сообщение от Noname2512 Посмотреть сообщение
а если мне надо массив чисел сохранить
я попробовал написать
C++
1
int fn (int a, int  &r[3] ) {}
а он ругается :
'r' : arrays of references are illegal
Дело в том, что вы указали не ссылку на массив, а массив ссылок. А в С++ запрещается создавать массив ссыло. Поэтому ткомпилятор и ругается. Нужно правильно синтаксически задавать конструкции языка. В вашем случае следует записать таким образом\\

C++
1
int fn (int a, int ( &r )[3] ) {}
Добавлено через 5 минут
Цитата Сообщение от Даня98 Посмотреть сообщение
С с++ когда объявляется массив в аргументах функии на него автоматически создается ссылка. (&) Поэтому, все изменения массива в функции изменяют сам массив а не его копию.
Не фантазируйте! Это совершенно неверно, что вы написали. Никаких ссылок не создается на массив. Просто массив, переданный в качестве аргумента для параметра, указанного, как массив, преобразуется в указатель на первый элемент массива. А указатель на первый элемент массива и ссылка на массив - это совершенно разные вещи!
Yandex
Объявления
10.08.2011, 20:11     Как сделать выходные параметры у функции?
Ответ Создать тему
Опции темы

Текущее время: 16:22. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru