Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lesson2.doc
Скачиваний:
2
Добавлен:
01.07.2025
Размер:
59 Кб
Скачать
☆

Функции в языке с

Функция является основным структурным элементом языка C. Определение функции имеет следующий синтаксис:

<возвращаемый_тип> <имя_функции>(<список параметров>)

{

<тело функции>

}

Пример:

long double max_ab(long double a, long double b)

{

long double x;

if (a>b) {x=a} else {x=b};

return x;

}

Данная функция возвращает значение максимального из своих двух параметров. Оператор return служит для указания возвращаемого функцией значения (в данном случае – значения переменной х). На нём исполнение функции заканчивается. Если оператор return отсутствует, то возвращается произвольное (непредсказуемое с точки зрения разработчика программы!) значение. Вызов данной функции в программе происходит следующим образом:

long double x=2.71, y=3.14, z;

z=max_ab(x, y);

При вызове функции возвращаемое ею значение можно игнорировать, например:

printf(“OK”);

Тип параметров функции при вызове должен в точности соответствовать типу параметров, указанных при её объявлении.

Помимо определения для функции обычно пишется также её прототип, который размещается в заголовочном файле с расширением *.h и служит для проверки корректности обращений к функциям при компиляции программы из нескольких модулей. Прототип функции идентичен заголовку, но заканчивается точкой с запятой, а тело функции отсутствует:

long double max_ab(long double a, long double b);

Функция в С может иметь переменное число параметров. В этом случае за последним обязательным параметром в заголовке функции следует многоточие. Подобной функцией является, например, функция printf().

Следует также отметить, что в С, в отличие от некоторых других языков программирования нет понятия “вложенных функций”. Все функции в С имеют одинаковый ранг.

Область действия переменных и связанные с нею понятия

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

Областью действия переменной называется та часть программы, где переменная доступна для программного кода. По своей области действия переменные делятся на локальные и глобальные. Локальные переменные объявляются внутри функции и вне её не доступны. К ним можно обращаться только в пределах объявляющей их функции. Если две функции описывают локальную переменную с одним именем, то это две совершенно различные переменные и никакой неоднозначности не возникает. (Параметры в определении функции можно рассматривать в этом смысле как локальные переменные, инициализируемые значениями аргументов при вызове).

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

Для придания переменным некоторых специфических свойств в C существуют следующие модификаторы переменных:

static. Если локальная переменная объявлена в функции как static, то она будет сохранять своё значение между вызовами этой функции (то есть, фактически, существовать всё время, пока программа выполняется). Если модификатор static применить к глобальной переменной, то он ограничит область её действия текущим модулем компиляции.

auto. Специфицирует переменную как создаваемую автоматически и предполагается по умолчанию.

register. Рекомендует компилятору разместить локальную переменную в регистре процессора, если это возможно.

extern. Служит указанием компилятору, что переменная является внешней, то есть объявлена в другом модуле.

volatile. Служит для отметки нестабильных переменных.

Пример:

extern long double pi;

long double circle_square(long double r)

{

long double s;

s=pi*r*r;

return s;

}

В данном примере объявлена функция circle_square, вычисляющая площадь круга. Для вычисления она использует переменную pi, которая объявлена в другом модуле программы.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]