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

return зачем он?

19.05.2013, 17:25. Показов 63250. Ответов 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
3956 / 1811 / 184
Регистрация: 21.11.2009
Сообщений: 2,540
20.05.2013, 13:03
Лучший ответ Сообщение было отмечено как решение

Решение

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

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

Даже не знаю, как это ещё проще объяснить можно
5
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9005 / 4706 / 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
Ответ Создать тему
Новые блоги и статьи
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
PowerShell Snippets
iNNOKENTIY21 11.11.2025
Модуль PowerShell 5. 1+ : Snippets. psm1 У меня модуль расположен в пользовательской папке модулей, по умолчанию: \Documents\WindowsPowerShell\Modules\Snippets\ А в самом низу файла-профиля. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru