КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Область видимости (действия) и время жизни переменных
Объекты, объявленные вне процедур, называются внешними, объекты, объявленные внутри процедур и блоков, - внутренними. Областью видимости ( scope ) объекта является та часть программы, в пределах которой использование его имени является корректным. Область видимости имени (определения или описания) внутреннего объекта – это процедура или блок, в которой(ом) находится это определение или описание. Области видимости внешнего объекта в языках C и Basic несколько отличаются. В языке C она распространяется от места его определения до конца файла. Напомним, что в этом языке допустимо определение внешнего объекта между определениями функций. В языке Basic эта область охватывает весь модуль (файл). Если одно и то же имя объявлено на разных уровнях структуры, то это объявление разных объектов и всегда превалирует более "внутреннее" объявление имени, если мы находимся в его области видимости. Пример. Приводится на языке C, поскольку он имеет больше уровней структуры. Стрелками с номером показаны области видимости соответствующего объекта по имени a. #define SIZE 100 float a[SIZE]; _______ /* 1-й объект */ .............. | | ß 1 void main(void){ | int a,b; _____| /* 2-й объект */ ........ | ß 2 { double a,c; __| /* 3-й объект */ ........... | ß 3 } _|_ ........ | ß 2 } /* End main */ ___| int func1(...){ _______ int k,l; | ........ | ß 1 { char a,e; _____| /* 4-й объект */ ......... | ß 4 } __|___ ........ | ß 1 } /* End func1 */ | | int func2(...){ | .......... | ß 1 } /* End func2 */ ______| Объекты, объявленные во внешних уровнях структуры, называются глобальными по отношению к объектам вложенных в них уровней. Области видимости имен называют областями локализации, а соответствующие данные локальными по отношению к области видимости. Пример. Первый объект с именем a предыдущего примера глобален по отношению к другим областям локализации, но локален в файле. Второй объект с именем a глобален для блока, содержащего определение третьего объекта с именем a, но локален в функции main. Третий объект с именем a локален в блоке. В языке C файл может содержать одни объявления, которые затем могут быть включены в нужные места программы с помощью директивы препроцессора #include. Рекомендация. Если в программе используются сложные структуры, то их тип разумно описать с помощью инструкции typedef и объединить в один. h файл. Кроме области видимости объекты программы обладают временем жизни ( lifetime ). Время жизни – это период времени, в течение которого объекту выделяется память. Для внешних объектов память резервируется на все время выполнения приложения. Внутренние объекты в большинстве случаев существуют (имеют выделенную память) только при выполнении процедуры или блока, в которой(ом) они определены. Обычно после завершения работы процедуры или блока отведенная им память освобождается. И в языке C, и в языке Basic есть средства, которые управляют областью видимости и временем жизни объектов программы. Механизм управления в них, однако, различен, поэтому рассмотрим эти средства по отдельности.
Дата добавления: 2014-12-27; Просмотров: 395; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |