Top.Mail.Ru
Ответы
Аватар пользователя
14лет
Изменено
Аватар пользователя
Аватар пользователя
Программирование
+1

В чем разница между функциями, которые возвращают значения и которые не возвращают? Не вникаю в смысл слова "возвращает"

Дополнен

не возвращают значения, для тех кто не понял

По дате
По рейтингу
Аватар пользователя
Новичок
14лет

Пустая функция, которая ничего "не возвращает".
void emptyFunc()
{
return; // Выход из функции (под-программы) , функция ничего не возвращает.
}
Вызвать её просто: emptyFunc();
Она лишь выполняет какую-либо задачу, которая не отдает никаких результатов вызвавшей её программе.
Никаких данных в регистры она не кладет, а значит и вызывающей программе оттуда брать нечего, ибо тип void.
--
Функция, которая просто возвращает 1:
int returnFunc()
{
return 1; // Здесь в регистр процессора помещается этот самый возврат
}

Компилятор сделал это примерно так:
00C613DE mov eax,1

Затем, содержимое регистра eax может быть использовано для каких либо целей вызывающей программой.
Например вызов и присвоение полученного результата переменной "newi":
newi = returnFunc(); // эта функция вернет 1 и поместит 1 в переменную

Компилятор делает "перемещение" содержимого из регистра eax(в него функция поместила 1) в участок памяти переменной newi:
002A1428 mov dword ptr [newi],eax

Вот такой процесс, хоть и сложно объяснил xD

Аватар пользователя
Просветленный
14лет

> и которые не возвращают

Таких попросту не бывает в природе.

Аватар пользователя
Мастер
14лет

пример 5+5
ответ равен 10, но языку допустим паскаль не понятно куда он ответ запишит куда возвратит,
пример возвращения
a:=5+5;
ответ 10 он возвратил в переменную а
тоесть получилось так
a=10;
короче в переменную записывается ответ, тоесть возвращает

Аватар пользователя
Мастер
14лет

например: сумма двух целых чисел есть целое число, т. е. функция которая должна
сложить 2 целых числа должна вернуть целое число.
А которые не возвращают например вывод строки на экран