Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабы_по_проге_Берлин / Книги / учебное пособие ОАиП.pdf
Скачиваний:
49
Добавлен:
11.02.2015
Размер:
947 Кб
Скачать
// тело функции

Во всех случаях в функцию передается адрес первого элемента массива, то есть указатель соответствующего типа.

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

по количеству параметров, либо по их типу, либо по типу возвращаемого результата, или и тем и другим.

inline функции

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

inline тип_возвращаемого_данного имя_функции(аргументы);

Класс памяти

В С(С+) каждая переменная и функция принадлежит некоторому классу памяти. Существуют следующие классы памяти переменных: автоматический

(auto), статический (static), регистровый (register) и внешний (extern). Все переменные, объявленные в теле функции без указания класса памяти, имеют класс памяти auto, т.е. они являются локальными.

Автоматические переменные

Переменные этого класса являются локальными, то есть они доступны (существуют) в пределах блока, в котором они объявлены.

Память для нее автоматически выделяется каждый раз вначале блока и освобождается в конце. Доступ к такой переменной возможен только в блоке в котором она определена. Автоматические переменные инициализируют при их определении или присваивания.

Статические переменные

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

static int i; // внешняя статическая переменная main()

{ . . .

}

Декларацию static можно использовать и для внутренних переменных. Аналогично автоматическим внутренние статические переменные локальны в функциях, но в отличие от автоматических они не возникают только на период выполнения функции, а существуют в памяти постоянно.