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

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


Перед функцией main можно заметить такую строку: int power(int m, int n);


Она сообщает, что power является функцией с двумя аргументами типа int, возвращающей также значение типа int. Эта декларация называется прототипом функции и обязана согласовываться по форме как с определением (заголовком) функции power, так и с любыми ее вызовами. Если определение функции отличается от ее прототипа или формы вызова, возникает ошибка.


Имена параметров согласовывать не обязательно. Вообще-то не обязательно даже указывать имена параметров в прототипе функции, поэтому предыдущий прототип можно было бы записать так: int power(int, int);


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


Сделаем одно замечание касательно истории языка. Самые большие изменения в ANSI С по сравнению с более ранними версиями произошли как раз в форме объявления и определения функций. В первоначальном синтаксисе языка С функция power была бы записана следующим образом:


/* power: возводит base в n-ю степень; п >= 0 */


/*    версия в старом стиле */


power(base, n) int base, n;


P = 1;


for (i = 1; i <= n; ++i) p = p * base; return p;

}


Имена параметров приведены в скобках, а вот типы объявлены перед открывающей левой фигурной скобкой. Необъявленные параметры считаются имеющими тип int. (Тело функции не отличается от предыдущей версии.)


Объявление функции power в начале программы выглядело бы так: int power();


Список параметров в старой версии не предусматривался, поэтому компилятор не мог проверить, корректно ли вызывалась функция power. Если еще учесть, что тип возвращаемого из power значения и так по умолчанию принимался int, все это объявление можно было бы просто опустить.

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