Спецификаторы


Спецификатор inline.
Может быть использован перед определением функции для того, чтобы компилятор помещал ее код непосредственно в место вызова функции. inline – функции – это такие ф-ции, чье тело подставляется в каждую точку вызова, вместо того, чтобы генерировать код вызова. При исп-и inline – функций скорость вып-я программы возрастает, однако, если размер этих ф-ций достаточно велик, то и размер программы увеличивается. Поэтому в кач-ве inline – функций исп-ся очень маленькие ф-ции.
Общая форма объявления inline – функций: inline объявление_функций .
Пр-р: inline f(void){ … }
void main (void) { f();}
Спецификатор const.
Существуют 3 вида именнованных констант: имя любого массива или функции, имена членов перечисления, любое имя любого типа, в определении которого присутствует модификатор const. Значения объектов, кот-е были объявлены как const, не м.б. изменены в программе.
const i = 5;
const int *ip; //константой является объект на который указывает указатель, поэтому указатель ip м.б. затем переопределен;
int* const ip; //сам указатель является константой. Использование const предпочтительнее по сравнению с #define, так как использование константы контролирует компилятор.
Спецификатор enum.
Спецификатор enum позволяет программисту создавать собственные типы.
enum weekDays { Monday, Tuesday, Wensday, Thursday, Friday };
weekDays days;
Переменная days теперь может принимать одно из 5 значений.
days = Wensday;
Идентификаторы перечисления представляют собой целочисленные переменные, которые по умолчанию имеют значения 0,1,…, если не указаны другие значения.
enum colors { Red=2, Green=3};
Операции new и delete
Операции new и delete выполняют динамическое распределение и отмену распределения памяти, аналогично, но с более высоким приоритетом, нежели стандартные библиотечные функции семейства malloc и free. Упрощенный синтаксис: указатель-имени = new имя <инициализатор-имени>;

delete указатель-имени;
3 способа исп-я опеераций:
new type_name float *r = new float;
new (type_name) float *r = new (float);
new type_name [expr] float *r = new float[20];
delete expr delete r
delete [expr] expr delete [20] r
Реальный размер занятого блока кратен определенному числу байт (в ВС 3.11 – это 16 байт). Размер занятого блока запис-ся в его начало и обычно занимает 4 байта.

Загрузка...