Но у меня глаз, что называется, "замылился" на более сложных вопросах и поэтому с простым разобраться не могу
Отрывок из книги "...именем программы является main и ... эта программа возвращает целое число..."
Кроме того, термин "возвращать нечто" встречался мною и раньше при изучении Pascal но я его благополучно заменял для себя на более понятный "передавать" а теперь жалею, что вовремя не разобрался.
Как понять "возвращает число"? Передаёт что ли? Ответ повторюсь, наверное настолько прост, что его нигде не объясняют. Не обессудте, если сразу не пойму и буду уточнять ответ. Спасибо.
Решено: "Программа возвращает число". Как это понять? (Хотя догадываюсь, что ответ лежит где-то на поверхности)
Модератор: Модераторы разделов
-
- Сообщения: 384
- Статус: Участник
- ОС: Debian GNU/Linux
Решено: "Программа возвращает число". Как это понять?
Зачем хорёк пошел в ларёк, зачем барсук полез на сук...
Мораль легко уразуметь: зачем на бал пришёл медведь?
Мораль легко уразуметь: зачем на бал пришёл медведь?
-
- Сообщения: 614
Re: Решено: "Программа возвращает число". Как это понять?
Функция main() как и любая другая функция может вернуть число.
Это число может быть передано той программе, которая запустила Вашу программу (родительской программе).
Почитай Дочерние процессы - вопрос по теоретическому материалу
Это число может быть передано той программе, которая запустила Вашу программу (родительской программе).
Почитай Дочерние процессы - вопрос по теоретическому материалу
для примера:
в шеле можно узнать код возврата последней завершившейся команды
попробуй
true
echo $?
false
echo $?
Вариант номер два, процесс не просит о смерти хочет жить и работать, но его убивают - сигналом в спину.
Тогда ядро сообщает родителю, что его сын погиб в неравном бою от рук сигнала номер такой та.
кстати нажатие комбинаций клавиш тоже приводит к посылки сигнала
пример, пробуй
sleep 10000
^C
echo $?

-
- Сообщения: 2910
Re: Решено: "Программа возвращает число". Как это понять?
Код: Выделить всё
#include <stdio.h>
int main(void)
{
return 0; // ключевой момент
}
Это как возвращаемое значение функции, только значаение передается обратно в оболочку например. 0 - успешное завершение, неноль - ошибка.
-
- Сообщения: 3339
- ОС: Slackware 12.2, ArchLinux 64
Re: Решено: "Программа возвращает число". Как это понять?
Странный отрывок.
Кроме того, термин "возвращать нечто" встречался мною и раньше при изучении Pascal но я его благополучно заменял для себя на более понятный "передавать" а теперь жалею что вовремя не разобрался.
Как понять "возвращает число"? Передаёт что ли? Ответ повторюсь, наверное настолько прост, что его нигде не объясняют. Не обессудте, если сразу не пойму и буду уточнять ответ. Спасибо.
Когда Вы запускаете программу, скажем, из командной строки, bash (командный интерпретатор) говорит программе -- ну-ка давай поработай! Программа работает, потом говорит bash'у -- все, поработала. Работа прошла нормально. Или наоборот, говорит, я попыталась поработать, но вышла ошибочка. Ее ответ -- это и есть число, возвращенное вызвавшему ее интерпретатору.
-
- Сообщения: 384
- Статус: Участник
- ОС: Debian GNU/Linux
Re: Решено: "Программа возвращает число". Как это понять?
Ну конечно. Впервые я столкнулся с этим термином в примерно таком контексте: "...функция X возвращает случайное число Y, удовлетворяющее условию..." и т. д. Теперь-то мне понятно, что "возвращает" значит "возвращает туда, откуда вызвана". Во как! Всё действительно просто- ответ на поверхности, я же в поисках его пытался углубляться куда-то ещё дальше и неизвестно, к чему эти потуги привели бы...
Всем спасибо!
Всем спасибо!
Зачем хорёк пошел в ларёк, зачем барсук полез на сук...
Мораль легко уразуметь: зачем на бал пришёл медведь?
Мораль легко уразуметь: зачем на бал пришёл медведь?
-
- Сообщения: 159
- ОС: AltLinux2.4 master
Re: Решено: "Программа возвращает число". Как это понять?
promov писал(а): ↑13.09.2007 20:54Ну конечно. Впервые я столкнулся с этим термином в примерно таком контексте: "...функция X возвращает случайное число Y, удовлетворяющее условию..." и т. д. Теперь-то мне понятно, что "возвращает" значит "возвращает туда, откуда вызвана". Во как! Всё действительно просто- ответ на поверхности...
В случае bash механизм передачи значения (возврата) в точку вызова немножко другой. Собственно возвращаемое значение помещается в специальную переменную $?
А для записи куда нить некоторого значения используются специальные конструкции `thegototam` и $(thegototam), причём энтот tchegototam далжен чёнить писать на стандартный вывод:
Код: Выделить всё
[slavik@mycomp slavik]$ str="$(echo mama)"
[slavik@mycomp slavik]$ echo $str
mama
Примерно так

Познание бесконечности требует бесконечного времени.
А. и Б. Стругацкие
Понедельник начинается в субботу
А. и Б. Стругацкие
Понедельник начинается в субботу
-
- Сообщения: 151
- ОС: Debian
Re: Решено: "Программа возвращает число". Как это понять?
Что касается "программа возвращает", то тут уже объяснялось: программа передает число другой программе, которая ее вызвала (в частности, тому же командному интерпретатору).
Вообще о "функция возвращает значение":
Функция, вернее, ее имя - идентификатор или метка некоторого участка кода, на который переходит указатель (Если функция встраиваемая, то ее код просто вставляется в месте вызова ... но, это, наверное, понятно), когда встречает инструкцию вызова этой функции (в данном случае, просто наталкивается на имя этой функции в теле какой-либо другой функции). Для иллюстрации посмотрите где-нибудь, как можно с помощью всеми нелюбимого GOTO, всеми любимого IF и метки, реализовать цикл.

Также, функция - переменная, т.е. под нее выделяется участок памяти, соответствующий участку памяти, выделяющемуся под переменную того типа, который функция возвращает. Иными словами, кроме того, что функция (имя функции) указывает на некоторый участок кода, она является указателем на участок памяти, в который можно что-то записать. Вот результат выполнения кода тела функции и записывается в этот участок памяти. А функция (в смысле функция как переменная) содержит ссылку на этот участок памяти.
Словосочетание "функция возвращает значение ..." просто более удобно, чем "функция содержит адрес участка памяти, в котором содержится результат выполнения кода, описанного в теле функции."

p.s. ну где-то как-то так, в общем.

Параллельные извилины не пересекаются ...
-
- Сообщения: 1354
Re: Решено: "Программа возвращает число". Как это понять?
astronom писал(а): ↑22.08.2008 21:15
Что касается "программа возвращает", то тут уже объяснялось: программа передает число другой программе, которая ее вызвала (в частности, тому же командному интерпретатору).
Словосочетание "функция возвращает значение ..." просто более удобно, чем "функция содержит адрес участка памяти, в котором содержится результат выполнения кода, описанного в теле функции."![]()
p.s. ну где-то как-то так, в общем.
Для знакомых с паскалем -- достаточно представить, что программа всегда начинает исполняться не с неименованного блока begin end, а с:
function main(argc: integer; var argv: array of pchar);
begin ...; main:=something end;
Фраза "возвращает значение" отражает суть проискодящего -- в месте вызова функции поизводится ее вычисление (неважно, вызовом или подстановкой) и используется вычисленное значение.
Рассуждения на тему адресов/регистров в данном случае не существенны -- ибо зависят целиком зависят от платформы, компилятора, представления типа на платформе и определенных ОС правил возврата кода завершения процесса.
-
- Бывший модератор
- Сообщения: 5989
- ОС: OS X, openSuSE, ROSA, Debian
Re: Решено: "Программа возвращает число". Как это понять?
господа, не нужно насиловать труп которому скоро будет год.
-
- Сообщения: 384
- Статус: Участник
- ОС: Debian GNU/Linux
Re: Решено: "Программа возвращает число". Как это понять?
Дизелю: почему нет?
Мне-то всё понятно. Но я ведь не один тут. Может, кто ещё подобным вопросо задастся его некоторые объясения не устроят- вот, пожалуйста, по-другому объяснено. Парни не флудят, говорят по теме.
Мне-то всё понятно. Но я ведь не один тут. Может, кто ещё подобным вопросо задастся его некоторые объясения не устроят- вот, пожалуйста, по-другому объяснено. Парни не флудят, говорят по теме.
Зачем хорёк пошел в ларёк, зачем барсук полез на сук...
Мораль легко уразуметь: зачем на бал пришёл медведь?
Мораль легко уразуметь: зачем на бал пришёл медведь?
-
- Бывший модератор
- Сообщения: 5989
- ОС: OS X, openSuSE, ROSA, Debian
Re: Решено: "Программа возвращает число". Как это понять?
потому что тема уже раскрыта достаточно и пересказывать еще раз не имеет смысла, с другой стороны - тема не закрыта, и если у кого-то действительно возникнет вопрос по теме(в чем я лично очень сомневаюсь) - вполне может его здесь задать.