LINUX.ORG.RU

История изменений

Исправление Xenius, (текущая версия) :

Ну т.е. если я пишу функцию print_hello(), то вывод в ней - это все равно побочный эффект?

То это уже не функция, а процедура. Впрочем в C можно искусственно создать различие между функциями и процедурами, если в функция с возвращаемым значением избегать побочных эффектов, а все процедуры делать типа void. Если понадобится вернуть значение из процедуры, можно применить возврат по ссылке (указателю).

В паскале функции тоже могут что угодно делать, в том числе и побочные эффекты, но там по крайней мере есть специальное ключевое слово и хорошим стилем будет избегать побочных эффектах в подпрограммах, описаных со словом function.

А вообще почему бы тебе не прочитать учебник Столярова, а не мои попытки его пересказать?

Исправление Xenius, :

Ну т.е. если я пишу функцию print_hello(), то вывод в ней - это все равно побочный эффект?

То это уже не функция, а процедура. Впрочем в C можно искусственно создать различие между функциями и процедурами, если в функция с возвращаемым значением избегать побочных эффектов, а все процедуры делать типа void. Если понадобится вернуть значение из процедуры, можно применить возврат по ссылке (указателю).

В паскале функции тоже могут что угодно делать, в том числе и побочные эффекты, но там по крайней мере есть специальное ключевое слово и хорошим стилем будет избегать побочных эффектах в подпрограммах, описаных со словом function.

Исходная версия Xenius, :

Ну т.е. если я пишу функцию print_hello(), то вывод в ней - это все равно побочный эффект?

То это уже не функция, а процедура. Впрочем в C можно искусственно создать различие между функциями и процедурами, если в функция с возвращаемым значением избегать побочных эффектов, а все процедуры делать типа void. Если понадобится вернуть значение из процедуры, можно применить возврат по ссылке (указателю)