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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 24, средняя оценка - 4.63
Ryuk
179 / 177 / 33
Регистрация: 10.06.2011
Сообщений: 871
#1

return зачем он? - C++

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

Сколько бы книжек не перечитывал, так и не понял, зачем же все таки нужен return. Что значит: функция возвращает значение и что такое возврат значения вообще?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.05.2013, 17:25
Здравствуйте! Я подобрал для вас темы с ответами на вопрос return зачем он? (C++):

В чем разница между return и return false/true - C++
Привет всем. Вот подскажите плиз) return; return false; return true; расскажите пожалуйста об етих операторах.. чем они...

Как сделать так, что если файл существует return true, если нет - return false - C++
Здравствуйте, я новичок в программировании. Мой вопрос очень прост: как сделать так, что если файл существует return true если нет return...

сегодня наконец то понял что такое КЛАСС, и ОБЪЕКТ. понято всё, кроме одного - зачем всё это? в смысле, можно же без этого? так зачем жизнь усложнять? - C++
сегодня наконец то понял что такое КЛАСС, и ОБЪЕКТ. понято всё, кроме одного - зачем всё это? в смысле, можно же без этого? так зачем жизнь...

Зачем биты нужны это меньше байтов но int 32 бита но я не допер зачем это нужно это 4 байта то есть int не может больше 4 байт весить? - C++
Вот еще один вопрос зачем биты нужны это меньше байтов но int 32 бита но я не допер зачем это нужно это 4 байта то есть int не может...

return (n<0) ? -n:n; - C++
Что это означает, return (n&lt;0) ? -n:n; не как не могу понять? Может быть это как if (n&lt;0) return true; else false; ...

return - C++
Вот такой вопрос, как вернуть значения из функции, и чтоб функция main это узнала? если на примере, то во так, допучтим есть функция...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
henecs
17 / 17 / 0
Регистрация: 19.05.2013
Сообщений: 135
19.05.2013, 17:49 #2
это как волосы, они вроде не нужны но они есть
1
dickivs
46 / 46 / 6
Регистрация: 25.11.2011
Сообщений: 270
Завершенные тесты: 1
19.05.2013, 17:51 #3
оператор
C++
1
return
служит для возврата в точку где была активирована функция, т.е. говоря простым языком, если функция возвращает результат, оператор
C++
1
return выражение;
оценивает выражение и возвращает его значение вызывающему. Если функция не возвращает результата (т.е. она имеет возвращаемый тип void), управление возвращается, когда программа достигает оканчивающей функцию фигурной скобки или при исполнении оператора
C++
1
return;
0
Ryuk
179 / 177 / 33
Регистрация: 10.06.2011
Сообщений: 871
19.05.2013, 19:16  [ТС] #4
dickivs, а если еще проще
0
taras atavin
Ушёл с форума.
3569 / 1753 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
19.05.2013, 19:28 #5
Функция есть подпрограмма, возвращающая некое значение через собственное имя. Например,
C++
1
y=sin(x);
sin - функция, она вычисляет значение, в данном примере его надо присвоить переменной y, но в правой части оператора присваивания вместо значения указано имя самой функции. Процедура есть подпрограмма, которая так не может. Процедура в принципе может вернуть значение, только двумя способами: через параметр и через внешнюю по отношению к процедуре переменную. void функции формально тоже всегда возвращают значения, но специального типа без данных, в отличие от процедур, которые могут вообще ничего не возвращать, кроме управления. Вот return и возвращает значение через имя функции, то есть в результате его выполнения вся функция становится равна его операнду и её можно присвоить переменной, или передать в параметр другой функции, или в операнд любого другого оператора.
1
daslex
1271 / 516 / 106
Регистрация: 02.08.2011
Сообщений: 2,671
19.05.2013, 20:20 #6
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
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 и это одно будет как значение у обычной переменной, только для функции"
3
taras atavin
Ушёл с форума.
3569 / 1753 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
20.05.2013, 11:28 #7
Цитата Сообщение от daslex Посмотреть сообщение
если не хочешь делать из функции переменную, то пишешь без return
Он всё равно будет неявно в конце, а если надо выйти из функции в каком либо ещё месте, то в том самом месте допускается явный return без операнда.
1
Flassie
182 / 167 / 29
Регистрация: 03.08.2012
Сообщений: 591
Завершенные тесты: 2
20.05.2013, 12:15 #8
Со временем поймешь. По сути, любая функция, которая возвращает что-то - это переменная (грубо говоря).
Как и писалось выше, с функциями, возвращающими значения, можно работать как с переменными (то же присваивание, сложение и т.д. и т.п.)
0
daslex
1271 / 516 / 106
Регистрация: 02.08.2011
Сообщений: 2,671
20.05.2013, 12:59 #9
Цитата Сообщение от Flassie Посмотреть сообщение
По сути, любая функция, которая возвращает что-то - это переменная (грубо говоря)
я неправильно сказал, что
Цитата Сообщение от daslex Посмотреть сообщение
Если хочешь сделать из функции переменную
Функция не является переменной и переменную из функции не сделаешь. Но относится к функции как к некоторого рода вычисляемой константе можно.
0
MikeSoft
Эксперт С++
3799 / 1775 / 85
Регистрация: 21.11.2009
Сообщений: 2,540
20.05.2013, 13:03 #10
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Ryuk, если совсем понятным языком - то можно на детском примере...
Учитель задает вопрос (скажем, решить какую-то задачу) и ждёт. Школьники начинают решать... И вот один школьник решил задачу и знает ответ. Он поднимает руку и сообщает ответ.

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

Даже не знаю, как это ещё проще объяснить можно
3
IGPIGP
Комп_Оратор)
Эксперт по математике/физике
6465 / 3113 / 306
Регистрация: 04.12.2011
Сообщений: 8,587
Записей в блоге: 4
20.05.2013, 13:28 #11
Цитата Сообщение от 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 и это очень интересная возможность, но пока и так написал многовато.
0
Tulosba
:)
Эксперт С++
4395 / 3238 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
20.05.2013, 14:04 #12
Цитата Сообщение от 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
179 / 177 / 33
Регистрация: 10.06.2011
Сообщений: 871
20.05.2013, 14:29  [ТС] #13
MikeSoft, спасибо)
самое четкое объяснение
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.05.2013, 14:29
Привет! Вот еще темы с ответами:

с++ while return - C++
Задание:Вводится точность e. Вычислить сумму ряда 1-1/3+1/5-1/7.... сумма Вычисления продолжать до тех пор, пока очередное слагаемое не...

Return - C++
Всем доброго времени суток! У меня возникла проблема с возвратом значения массива double *c, у меня берётся только одно последнее значение...

return *this; - C++
return *this; Возвращает само себя?

Return - C++
Подскажите пожалуйста, каким образом return ом из функции возвращать 2 значения, напрмер 2 корня квардатного уравнения, найденных в одной...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
20.05.2013, 14:29
Ответ Создать тему
Опции темы

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