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

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

Войти
Регистрация
Восстановить пароль
 
 
lyubiteltyazha
0 / 0 / 0
Регистрация: 15.07.2016
Сообщений: 7
#1

В чем разница между функциями возвращающими и не возвращающими значения - C++

09.08.2016, 08:57. Просмотров 1057. Ответов 22
Метки нет (Все метки)

Подскажите еще, пожалуйста, по функциям. Есть два вида, которые возвращают значение и которые не возвращают. Так вот у меня вопрос, в чем между ними разница? В примерах обе функции выводят значение на экран, а вот что и куда возвращается или не возвращается не могу разобраться.

Пример 1.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
void faktorial(int numb)// заголовок функции
{
    int rezult = 1; // инициализируем переменную rezult значением 1
    for (int i = 1; i <= numb; i++) // цикл вычисления значения n!
        rezult *= i; // накапливаем произведение в переменной rezult 
    cout << numb << "! = " << rezult << endl; // печать значения n!
}
 
int main(int argc, char* argv[])
{
    int digit; // переменная для хранения значения n!
    cout << "Enter number: ";
    cin >> digit;
    faktorial(digit);// запуск функции нахождения факториала
    system("pause");
    return 0;
}
Пример 2.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
int faktorial(int numb)// заголовок функции
{
    int rezult = 1; // инициализируем переменную rezult значением 1
    for (int i = 1; i <= numb; i++) // цикл вычисления значения n!
        rezult *= i; // накапливаем произведение в переменной rezult 
    return rezult; // передаём значение факториала в главную функцию
}
 
int main(int argc, char* argv[])
{
    int digit; // переменная для хранения значения n!
    cout << "Enter number: ";
    cin >> digit;
    cout << digit << "! = " << faktorial(digit) << endl;// запуск функции нахождения факториала
    system("pause");
    return 0;
}
И еще вопрос. В функции faktorial() есть переменная numb (в цикле), но ее значение нигде не задается. И в чем отличие между параметром функции и ее аргументом?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.08.2016, 08:57     В чем разница между функциями возвращающими и не возвращающими значения
Посмотрите здесь:

В чём разница между процедурами и функциями ? C++
C++ Работа с функциями, возвращающими значения. Передача параметров по значению
C++ Работа с функциями, возвращающими значения
Работа с функциями, возвращающими значения. Передача параметров по значению C++
Работа с функциями, возвращающими значения. Передача параметров по значению C++
«Работа с функциями, возвращающими значения. Передача параметров по значению» C++
C++ В чем разница между функциями strcat() и strcpy()?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Toshkarik
1139 / 856 / 51
Регистрация: 03.08.2011
Сообщений: 2,384
Завершенные тесты: 1
10.08.2016, 12:20     В чем разница между функциями возвращающими и не возвращающими значения #21
Цитата Сообщение от _Ivana Посмотреть сообщение
значение из функции возвращается всегда, я могу прочитать его тип через typeid, а что не могу его скастить, передать и использовать в выражениях - кост особенности выбранной в С++ семантики типа void...
Значение должно где то храниться. Если Вы не можете "его скастить, передать и использовать в выражениях", то покажите хотя бы где оно хранится в памяти.

Добавлено через 4 минуты
Тип void и объект типа void - это разные вещи. По стандарту, void является incomplete type, поэтому объект это типа Вы создать никак не можете. Следовательно, не можете хранить какое то значение в объекте, который нельзя даже создать. Ну и на всякий случай:
возврат значения и возврат управления - это разные вещи.
avgoor
879 / 514 / 111
Регистрация: 05.12.2015
Сообщений: 1,455
10.08.2016, 12:27     В чем разница между функциями возвращающими и не возвращающими значения #22
Цитата Сообщение от _Ivana Посмотреть сообщение
Поэтому выбираю оставить свои заблуждения - значение из функции возвращается всегда, я могу прочитать его тип через typeid, а что не могу его скастить, передать и использовать в выражениях - кост особенности выбранной в С++ семантики типа void
тип, отдельно от языка, не существует. А в стандарте английским по белому написано:
3.9.1.9
A type сv void is an incomplete type that cannot be completed; such a type has an empty set of values. It is used as the return type for functions that do not return a value.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.08.2016, 22:32     В чем разница между функциями возвращающими и не возвращающими значения
Еще ссылки по теме:

C++ В чем разница между функциями, прототипы которых имеют вид?
C++ В чем разница между типом функции и типом возвращаемого значения?
C++ В чем разница между new и malloc()?
Разница между функциями atan и atan2 C++
В чем разница между malloc и new? C++

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

Или воспользуйтесь поиском по форуму:
hoggy
6158 / 2524 / 443
Регистрация: 15.11.2014
Сообщений: 5,566
Завершенные тесты: 1
10.08.2016, 22:32     В чем разница между функциями возвращающими и не возвращающими значения #23
Цитата Сообщение от _Ivana Посмотреть сообщение
Поэтому выбираю оставить свои заблуждения
ну заблуждайтесь дальше.
страна у нас свободная.
Yandex
Объявления
10.08.2016, 22:32     В чем разница между функциями возвращающими и не возвращающими значения
Ответ Создать тему
Опции темы

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