C-программа представляет собой последовательность внешнихопределений. Внешнее определение описывает идентификатор какимеющий класс памяти extern (по умолчанию), или возможно static, испецифицированный тип. Спецификатор типа ( п. 17.2 ) также может бытьпустым; в этом случае считается, что тип является типом int. Областьдействия внешних определений распространяется до конца файла, вкотором они приведены, точно так же, как влияние описаний простираетсядо конца блока. Синтаксис внешних определений не отличается отсинтаксиса описаний, за исключением того, что только на этом уровнеможно приводить текст функций.
Определение функции имеет форму
Тело-функции имеет форму
класса памяти является register; если такой класспамяти специфицирован, то в начале выполнения функции соответствующийфактический параметр копируется, если это возможно, в регистр.
Вот простой пример полного определения функции:
int max(a, b, c) int a, b, c; {
int m;
m = (a>b) ? a:b;
return((m>c) ? m:c); }
Здесь int - спецификатор-типа, мах(a,b,c) - описатель-функции, inta,b,c; - список-описаний формальных параметров, { ... } - блок,содержащий текст оператора.
ссылка на массив в любом контексте (в частности в фактическомпараметре) рассматривается как указатель на первый элемент массива,описания формальных параметров вида "массив ..." приспособлены прочесть:"указатель на ...". И наконец, поскольку структуры, об'единения ифункции не могут быть переданы функции, бессмысленно описыватьформальный параметр как структуру, об'единение или функцию (указатели натакие об'екты, конечно, допускаются).
Внешнее определение данных имеет форму
Классом памяти таких данных может быть extern (в частности, поумолчанию) или static, но не auto или register.
[Назад] [Содержание] [Вперед]
| Главная |