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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 86, средняя оценка - 4.80
&Alex&
19 / 19 / 1
Регистрация: 21.03.2010
Сообщений: 221
#1

Принцип действия функции return - C++

12.04.2010, 21:00. Просмотров 11862. Ответов 11
Метки нет (Все метки)

Никак не пойму принцип действия функции return. Объясните пожалуйста и если можно то на примере.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.04.2010, 21:00
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Принцип действия функции return (C++):

Объясните принцип действия программы, меняющей местами строки матрицы с наибольшим и наименьшим элементами - C++
Доброго времени суток. Задание звучит так: В произвольной матрице A поменять местами строку, содержащую минимальный элемент матрицы,...

return в функции потока - C++
Куда возвращается значение, указанное в return функции созданного потока?

Несколько return в функции - C++
Что будет, если написать несколько ретурнов в функции? Например: int (int x, int y) { return x; return y; }

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

Что делает return в функции void? - C++
void handle_arrival(vector<Car>& cars, vector< stack<string> >& parking_lot, const string& plate) { // TODO: Handle car arrivals ...

Почему return не прерывает выполнение функции? - C++
Всем здрава! Чет я тут запутался слегонца. Есть функция: a = 1; b = 0; int pro() { if (a == 1){ if (b ==...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
neske
1482 / 849 / 76
Регистрация: 26.03.2010
Сообщений: 2,917
12.04.2010, 21:03 #2
http://tinyurl.com/ybl6v54
CyBOSSeR
Эксперт C++
2300 / 1670 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
12.04.2010, 21:08 #3
Цитата Сообщение от &Alex& Посмотреть сообщение
функции
Это оператор, а не функция.
Цитата Сообщение от &Alex& Посмотреть сообщение
принцип действия
До безумие прост - возвращает значение указанное за ним.
Цитата Сообщение от &Alex& Посмотреть сообщение
можно на примере
C++
1
2
3
4
5
6
7
8
// Возводит число n в квадрат
double square(double n) {
  return n * n;
}
 
// ...
double result = square(2.0); // result == 4.0
// ...
Функция square принимает число типа double, и возвращает его квадрат (строка 2).
M128K145
Эксперт С++
8286 / 3505 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
12.04.2010, 21:09 #4
&Alex&, возврат значения функцией через регист eax
Genius Ignat
1236 / 774 / 44
Регистрация: 16.09.2009
Сообщений: 2,014
12.04.2010, 21:22 #5
&Alex&, возврат значения функцией через регист eax
Ух уже ассемблер перекочевывает из своего раздела.
И добавлю свои 5 копеек по низкому уровню:

И после возврата из функции стек обретает такое
состояние, которое было перед вызовом функции.
Стек использует LIFO - принцип: последним пришел, первым ушел.
Sheffs
1 / 1 / 0
Регистрация: 31.05.2013
Сообщений: 14
03.06.2013, 01:47 #6
Как возвратить два значения из функции с помощью return?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 int search(int i)
{
    max1=a[0];
for(i=1; i<n; i++)
{
    if(a[i]>=max1)
    {
        max2=max1;
        max1=a[i];       
    }
    else
        if(a[i]>=max2 && a[i]!=max1)
            max2=a[i];
}
return max2;
нужно в int main вернуть max1 и max2, что бы потом эти значения вывести на экран.
Croessmah
Модератор
Эксперт CЭксперт С++
13134 / 7397 / 828
Регистрация: 27.09.2012
Сообщений: 18,231
Записей в блоге: 3
Завершенные тесты: 1
03.06.2013, 01:48 #7
Цитата Сообщение от Sheffs Посмотреть сообщение
Как возвратить два значения из функции с помощью return?
Никак. Однако, можно вернуть
C++
1
std::pair
Sheffs
1 / 1 / 0
Регистрация: 31.05.2013
Сообщений: 14
03.06.2013, 01:53 #8
pair вернет данные из функции search в основу int main?
Croessmah
Модератор
Эксперт CЭксперт С++
13134 / 7397 / 828
Регистрация: 27.09.2012
Сообщений: 18,231
Записей в блоге: 3
Завершенные тесты: 1
03.06.2013, 01:57 #9
Цитата Сообщение от Sheffs Посмотреть сообщение
pair вернет данные из функции search в основу int main?
конечно
http://www.cplusplus.com/reference/utility/pair/
Tulosba
:)
Эксперт С++
4393 / 3236 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
03.06.2013, 10:54 #10
Sheffs, можно и через параметры-ссылки передать.
P.S. смотрю у Вас функция какая-то нелепая, передаете i, а потом используете ее как переменную цикла.
taras atavin
Ушёл с форума.
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
03.06.2013, 14:50 #11
Цитата Сообщение от &Alex& Посмотреть сообщение
функции return
нет такой функции.

Добавлено через 3 минуты
Цитата Сообщение от M128K145 Посмотреть сообщение
&Alex&, возврат значения функцией через регист eax
Существует множество соглашений о вызовах и во всех способ возврата значения зависит от типа. За одним лишь исключением - когда соглашение предусматривает возврат значения только через память и передачу указателя на него через один, или два регистра.

Добавлено через 3 минуты
Цитата Сообщение от Sheffs Посмотреть сообщение
int search(int i)
{
* * max1=a[0];
for(i=1; i<n; i++)
{
* * if(a[i]>=max1)
* * {
* * * * max2=max1;
* * * * max1=a[i]; * * *
* * }
* * else
* * * * if(a[i]>=max2 && a[i]!=max1)
* * * * * * max2=a[i];
}
return max2;
Не правильно. Если уж ты пишешь в глобальную память, то это и должен быть способ возврата значения, а не оператором return. Кроме того, следует избегать обращений к глобальным данным, на которые не ссылаются параметры-ссылки и не указывают параметры-указатели.

Добавлено через 1 минуту
Цитата Сообщение от Sheffs Посмотреть сообщение
в основу int main
у функции main нет основы.

Добавлено через 2 минуты
Цитата Сообщение от Tulosba Посмотреть сообщение
передаете i, а потом используете ее как переменную цикла.
Ну это то на фоне его обращения с глобальной памятью и капитальной путаницей в двух различных способах возврата значений - мелочь не сусветная. Как ты её заметил то?

Добавлено через 1 минуту
Цитата Сообщение от Croessmah Посмотреть сообщение
И что? От этого у функции main появится основа, в которую можно будет что то вернуть? Или ты "нет" забыл?
Croessmah
Модератор
Эксперт CЭксперт С++
13134 / 7397 / 828
Регистрация: 27.09.2012
Сообщений: 18,231
Записей в блоге: 3
Завершенные тесты: 1
03.06.2013, 15:06 #12
taras atavin, Перечитайте все посты. Ясно же, что под возвратом в основу имеется ввиду возврат значения из функции search в основную функцию - в main
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.06.2013, 15:06
Привет! Вот еще темы с ответами:

Куда return возвращает результат из функции? - C++
Добрый день . возник вопрос куда возвращает return из функции , то что он должен возвратить? Я думал он возвращает результат туда где он...

Не работает оператор return в рекурсивной функции - C++
Писал курсач реализовать игру в калах. В коде в функции solve_computer() в 112 строчке не срабатывает оператор return. Понятия не имею...

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

Break и return в функции (+ про блок-схемы) - C++
int proverka_processor(int n, char * comp) { int i; for (i = 0; i &lt; n; i++) if ((*comp &gt; 0 &amp;&amp; *comp &lt; 256 &amp;&amp; isalpha(*comp)) ||...


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

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

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