шпаргалка

Имена и типы, область видимости.

[ Назад ]
Имена и типы. Имя обозначает объект, функцию, тип, значение или метку. Имя может использоваться только внутри части текста программы, называемой его областью видимости. Имя имеет тип, определяющий его использование. Объект - это область памяти. Объект имеет класс памяти, определяющий время его жизни. Область видимости? Существует четыре ее вида: локальная, файл, программа и класс. Локальная область- имя, описанное в блоке, локально в этом блоке и может использоваться только в нем. Исключения составля¬ют метки, которые могут использоваться в любом месте функции, в которой они описаны. Файл - имя, описанное вне любого блока. Программа - имя, описанное в файле, может использоваться в любом другом файле. Класс - имя члена класса, локально для его класса и может ис¬пользоваться только в функции-члене этого класса. Область видимости - это часть текста программы, в которой может быть использован данный объект. Объект считается видимым в блоке или в исходном файле, если в этом блоке или файле известны имя и тип объекта. Объект может быть видимым в пределах блока, исходного файла или во всех исходных файлах, образующих программу. Это зависит от того, на каком уровне объявлен объект: на внутреннем, т.е. внутри некоторого блока, или на внешнем, т.е. вне всех блоков. Видимость переменных и функций в программе определяется следующими правилами. 1. Переменная, объявленная или определенная глобально, видима от точки объявления или определения до конца исходного файла. Можно сделать переменную видимой и в других исходных файлах, для чего в этих файлах следует ее объявить с классом памяти extern. 2. Переменная, объявленная или определенная локально, видима от точки объявления или определения до конца текущего блока. Такая переменная называется локальной. 3. Переменные из объемлющих блоков, включая переменные объявленные на глобальном уровне, видимы во внутренних блоках. Эту видимость называют вложенной. Если переменная, объявленная внутри блока, имеет то же имя, что и переменная, объявленная в объемлющем блоке, то это разные переменные, и переменная из объемлющего блока во внутреннем блоке будет невидимой. 4. Функции с классом памяти static видимы только в исходном файле, в котором они определены. Всякие другие функции видимы во всей программе. Метки в функциях видимы на протяжении всей функции. Имена формальных параметров, объявленные в списке параметров прототипа функции, видимы только от точки объявления параметра до конца объявления функции.
2 Назначение и синтаксис функций malloc() и calloc().
Malloc()
Функция Выделяет память.
Синтаксис #include<stdlib.h> #include<alloc.h> void *malloc(size_t size);
Файл, содержащий stdlib.h и alloc.h прототип Описание: Функция обеспечивают выделение блока памяти, размером size байт. Она позволяет программе выделять память по необходимости и столько, сколько нужно. Динамическая область памяти доступна для динамического размещения блоков памяти переменной длины. Многие структуры данных, такие как "деревья" или "списки" - естественным образом используют динамическое распределение памяти. В малых моделях памяти, вся область памяти между концом сегмента данных и вершиной программного стека доступна для использования, за исключением 256-байтовой границы, находящейся непосредственно перед вершиной стека. Данная граница предназначена для наращивания стека прикладной программы (плюс небольшое количество, требуемое для DOS). В больших моделях памяти все пространство после программного стека до конца физической памяти доступно для динамической области. Возвращаемое значение. Функция malloc возвращает указатель на блок выде- ленной памяти. Если для размещения блока недостаточно памяти, функция malloc возвращает NULL.Содержимое блока остается неизменным. Если аргумент size равен 0, то функция возвращает NULL. Переносимость. Функция доступна в системах UNIX и поддерживается стандартом ANSI C.
Calloc()
Функция - Выделяет оперативную память.
Синтаксис #include <stdlib.h>
void * calloc(size_t nitems, size_t size);
Файл, содержащий прототип stdlib.h,alloc.h
Описание : calloc обеспечваеит доступ к динамической области памяти. Динамическая область памяти доступна для динамического распределения блоков памяти переменной длины. Многие структуры данных, например, деревья и списки, используют распределение динамической области памяти. Все пространство памяти между концом сегмента данных и верхушкой программного стека доступно для использования в моделях памяти small (tiny, small, medium), кроме небольшой области в самой верхней части стека. Это пространство необходимо для роста стека прикладной программы и плюс небольшая часть, используемая DOS. В моделях памяти типа large (compact, large, huge) все пространство за границей программного стека до конца физической памяти доступно для динамической области памяти.
Блок обнуляется. Если вы хотите выделить блок, размер которого превышает 64К то нужно использовать функцию farcalloc.
Возвращаемое значение - calloc возвращает указатель на выделенный блок. calloc возвращает NULL, если недостаочно памяти для выделения нового блока, или nitems или size равны 0.
Переносимость - Поддерживается в системах UNIX и определена в ANSI C.
Стек (англ. stack — стопка) — структура данных с методом доступа к элементам LIFO (англ. Last In — First Out, «последним пришел — первым вышел»). Чаще всего принцип работы стека сравнивают со стопкой тарелок: чтобы взять вторую сверху, нужно снять верхнюю.

КАТЕГОРИИ:

Network | английский | архитектура эвм | астрономия | аудит | биология | вычислительная математика | география | Гражданское право | демография | дискретная математика | законодательство | история | квантовая физика | компиляторы | КСЕ - Концепция современного естествознания | культурология | линейная алгебра | литература | математическая статистика | математический анализ | Международный стандарт финансовой отчетности МСФО | менеджмент | метрология | механика | немецкий | неорганическая химия | ОБЖ | общая физика | операционные системы | оптимизация в сапр | органическая химия | педагогика | политология | правоведение | прочие дисциплины | психология (методы) | радиоэлектроника | религия | русский | сертификация | сопромат | социология | теория вероятностей | управление в технических системах | физкультура | философия | фотография | французский | школьная математика | экология | экономика | экономика (словарь) | язык Assembler | язык Basic, VB | язык Pascal | язык Си, Си++ |