Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.74/333: Рейтинг темы: голосов - 333, средняя оценка - 4.74
 Аватар для Ryuk
183 / 182 / 56
Регистрация: 10.06.2011
Сообщений: 871

return зачем он?

19.05.2013, 17:25. Показов 63648. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Сколько бы книжек не перечитывал, так и не понял, зачем же все таки нужен return. Что значит: функция возвращает значение и что такое возврат значения вообще?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
19.05.2013, 17:25
Ответы с готовыми решениями:

Зачем нужен return?
Я читал,что return возвращает значение функции. Какое значение? Почему иногда return 0, а иногда return 1? Бывают случаи,когда у return...

Не могу понять, зачем использовать return
Ув. программисты, Почему так часто используют функции, которые что-то возвращают ? Почему нельзя что либо возвращать просто через cout...

Зачем return
var Person1 = { cons: function(name, age, gender){ this.name = name; this.age = age; this.gender = gender; return...

12
 Аватар для henecs
18 / 18 / 11
Регистрация: 19.05.2013
Сообщений: 135
19.05.2013, 17:49
это как волосы, они вроде не нужны но они есть
1
 Аватар для dickivs
48 / 48 / 11
Регистрация: 25.11.2011
Сообщений: 275
19.05.2013, 17:51
оператор
C++
1
return
служит для возврата в точку где была активирована функция, т.е. говоря простым языком, если функция возвращает результат, оператор
C++
1
return выражение;
оценивает выражение и возвращает его значение вызывающему. Если функция не возвращает результата (т.е. она имеет возвращаемый тип void), управление возвращается, когда программа достигает оканчивающей функцию фигурной скобки или при исполнении оператора
C++
1
return;
0
 Аватар для Ryuk
183 / 182 / 56
Регистрация: 10.06.2011
Сообщений: 871
19.05.2013, 19:16  [ТС]
****ivs, а если еще проще
0
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
19.05.2013, 19:28
Функция есть подпрограмма, возвращающая некое значение через собственное имя. Например,
C++
1
y=sin(x);
sin - функция, она вычисляет значение, в данном примере его надо присвоить переменной y, но в правой части оператора присваивания вместо значения указано имя самой функции. Процедура есть подпрограмма, которая так не может. Процедура в принципе может вернуть значение, только двумя способами: через параметр и через внешнюю по отношению к процедуре переменную. void функции формально тоже всегда возвращают значения, но специального типа без данных, в отличие от процедур, которые могут вообще ничего не возвращать, кроме управления. Вот return и возвращает значение через имя функции, то есть в результате его выполнения вся функция становится равна его операнду и её можно присвоить переменной, или передать в параметр другой функции, или в операнд любого другого оператора.
1
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,886
19.05.2013, 20:20
Лучший ответ Сообщение было отмечено как решение

Решение

Ryuk,
Вот тебе проще

Если хочешь сделать из функции переменную, задаешь функции тип и пишешь return что-то.
Это что-то ты вычисляешь внутри функции, чтобы потом использовать из любого места программы в зависимости от чего-то там.

если не хочешь делать из функции переменную, то пишешь без return
C++
1
2
3
 void func()
{
}
===================
если ты сделал из функции что-то типа переменной, то ты можешь складывать, вычитать, умножать такие функции.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
 
using namespace std;
 
 
int func1()
{
    return 5;
}
 
int func2()
{
    return 10;
}
 
int main()
{           
        cout<<func1()+func2();
        cin.get();
                       
}
Сама функция используется для вычислений, в зависимости от результатов которых будет зависеть поведение программы. Грубо говоря: "Внутри функции ты что-то одно вычисляешь, это одно записываешь после return и это одно будет как значение у обычной переменной, только для функции"
5
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
20.05.2013, 11:28
Цитата Сообщение от daslex Посмотреть сообщение
если не хочешь делать из функции переменную, то пишешь без return
Он всё равно будет неявно в конце, а если надо выйти из функции в каком либо ещё месте, то в том самом месте допускается явный return без операнда.
1
187 / 172 / 38
Регистрация: 03.08.2012
Сообщений: 596
20.05.2013, 12:15
Со временем поймешь. По сути, любая функция, которая возвращает что-то - это переменная (грубо говоря).
Как и писалось выше, с функциями, возвращающими значения, можно работать как с переменными (то же присваивание, сложение и т.д. и т.п.)
0
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,886
20.05.2013, 12:59
Цитата Сообщение от Flassie Посмотреть сообщение
По сути, любая функция, которая возвращает что-то - это переменная (грубо говоря)
я неправильно сказал, что
Цитата Сообщение от daslex Посмотреть сообщение
Если хочешь сделать из функции переменную
Функция не является переменной и переменную из функции не сделаешь. Но относится к функции как к некоторого рода вычисляемой константе можно.
0
Эксперт С++
 Аватар для MikeSoft
3957 / 1812 / 184
Регистрация: 21.11.2009
Сообщений: 2,540
20.05.2013, 13:03
Лучший ответ Сообщение было отмечено как решение

Решение

Ryuk, если совсем понятным языком - то можно на детском примере...
Учитель задает вопрос (скажем, решить какую-то задачу) и ждёт. Школьники начинают решать... И вот один школьник решил задачу и знает ответ. Он поднимает руку и сообщает ответ.

Так вот момент "сообщает ответ" и равен оператору return.
То есть, мы имеем нужный ответ и продолжать дальше решение не имеет смысла. Нужно сказать остальным, чтобы прекратили решать.

Даже не знаю, как это ещё проще объяснить можно
5
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
20.05.2013, 13:28
Цитата Сообщение от Ryuk Посмотреть сообщение
Сколько бы книжек не перечитывал, так и не понял, зачем же все таки нужен return. Что значит: функция возвращает значение и что такое возврат значения вообще?
Я тоже не имею опыта в С++ и пишу для... Ну в общем может улыбнёт кого-то).
Функция, - поименованный блок кода, в котором кроме внутренних объявлений, раньше всех проводятся объявления через формальные параметры и их инициализация через переданные значения. Эти переменные будут по необходимости освобождены при выходе. Использование внешних и статических переменных тоже возможно. Для функций явно возвращающих значение объявляется его тип. Результат вычислений подставляется в точку вызова. Оператор return информирует компилятор о двух вещах: первое - вот и точка выхода; второе - вот и возвращаемое значение (для void - тип void). То есть точек выхода может быть несколько. При возврате из вложенных блоков нужно убедиться, что все динамические переменные и захватываемые ресурсы освобождены.
Еще важно то, что оператор return принимает выражение и тут есть 2 момента:
- первый это тот факт, что этот оператор заставляет компилятор проверять возможность неявного преобразования результата выражения к типу возвращаемого значения. То есть по возможности это хорошо бы сделать явно;
- второй это тот факт, что сложное выражение, включающее точки следования, вызова, сложные операторы, вроде:
C++
1
rerutn anotherFoo(varA)?nextOneFoo(varB):andElseOneFoo(varC);
не делают чтение/изменение и отладку, приятной. Вывод: для начала, лучше разделить вычисления на операторы, а вернуть результат.
Ещё пример того, что можно но не нужно:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
using namespace std;
void helloWorld();
void voidFoo();
int main()
{
voidFoo();
cout << endl;
    system( "pause" );
return 0;   
}
void helloWorld(){
cout<<"Hello world!";
return ;// <- это правильно. То есть можно смело удалить или закоментировать.
}
void voidFoo(){
return helloWorld();// <- вернули "значение" из void!  То есть тоже можно смело удалить оператор return.
}
Возврат из функции ссылки на переменную позволяет работать с ней как с переменной типа rvalue и это очень интересная возможность, но пока и так написал многовато.
2
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
20.05.2013, 14:04
Цитата Сообщение от IGPIGP Посмотреть сообщение
Ещё пример того, что можно но не нужно:
Эта штука полезна при построении шаблонов, т.е. возврат чего-то, что по сути есть void. Например:
C++
1
2
3
4
5
template<class T>
T f()
{
  return T();
}
Ну а еще можно для функции, возвращающей void делать приведение любого результата к void. Например:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
 
int f()
{
    std::cout << "f() called\n";
    return 42;
}
 
void g()
{
    return static_cast<void>(f());
}
 
int main() {
   g();
   return 0;
}
1
 Аватар для Ryuk
183 / 182 / 56
Регистрация: 10.06.2011
Сообщений: 871
20.05.2013, 14:29  [ТС]
MikeSoft, спасибо)
самое четкое объяснение
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
20.05.2013, 14:29
Помогаю со студенческими работами здесь

return. Зачем?
Здравствуйте. function d($a) { $a=htmlspecialchars($a); $a=stripslashes($a); $a=addslashes($a); ...

Зачем нужен return
return возвращает какие-то значения или что-то ещё. Для чего? кому куда и т.д

Зачем здесь return ?
Читаю книгу Герберт Шилда C# Полное руководство. Cам не очень знаю что такое return, но зачем он здесь используется?

Зачем тут return
эта функция удаляет узел из односвязного линейного списка. На вход принимаются указатели на первый элемент списка и удаляемый элемент...

Зачем в приведённом коде return ?
День добрый! Смотрю на один код из известной книги Котерова. Это перезагрузка перехвата обращения к несуществующим свойствам класса. В...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2. Задача: показать затраченные материалы за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом. В качестве. . .
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определённом условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru