Язык программирования C

Скачать в pdf «Язык программирования C»


Новый синтаксис прототипов функций позволяет компилятору очень легко выявлять ошибки в количестве аргументов или их типах. Старый стиль объявлений и определений функций все еще работает в ANSI С, по крайней мере в переходный период, но мы настоятельно рекомендуем пользоваться только новой формой, если компилятор ее поддерживает.


Упражнение 1.15. Перепишите программу преобразования температур из раздела 1.2 так, чтобы само преобразование выполнялось функцией.

1.8. Аргументы: передача по значению


Один из аспектов функций С может оказаться новым для программистов, привыкших к другим языкам, в частности к Fortran. В языке С все аргументы функций передаются “по значению”. Это означает, что вызываемая функция получает значения своих аргументов в виде временных переменных, а не оригиналов. Отсюда следуют несколько другие свойства функций, чем в языках, где происходит “передача по ссылке”, — как в Fortran или в блоке var в языке Pascal, где вызывающая процедура имеет доступ к исходным аргументам, а не локальным копиям.


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


Передача по значению— это не ограничение, а благо. Обычно благодаря ей программы пишутся компактнее и с меньшим количеством лишних переменных, поскольку в вызываемой функции параметры можно воспринимать как удобно инициализированные локальные переменные. Например, вот версия функции power, эффективно использующая это свойство:


/* power: возводит base в n-ю степень; п >= 0; 2-я версия */ int power(int base, int n)


for (p = 1; n > 0; —n) p = p * base; return p;

Скачать в pdf «Язык программирования C»