ЛЕКЦИЯ 7 КЛАССЫ ПАМЯТИ И ОБЛАСТЬ ДЕЙСТВИЯ ОБЪЕКТОВ.

Презентация:



Advertisements
Похожие презентации
Информационные технологии Классы памяти auto static extern register Автоматические переменные создаются при входе в функцию и уничтожаются при.
Advertisements

Лекция 8 Область видимости Время жизни. Область видимости Область видимости – характеристика именованного объекта Область видимости - часть текста программы,
Функции Функция – именованная последовательность описаний и операторов, выполняющая некоторое действие. Может иметь параметры и возвращать значение. Функция.
Общая структура программы на языке Си Всякая программа на языке Си представляет собой совокупность одной или более функций, каждая из которых есть независимый.
Основы информатики Классы Заикин Олег Сергеевич zaikin.all24.org
©Павловская Т.А. Язык С++ Курс «С++. Программирование на языке высокого уровня» Павловская Т.А.
Практическое занятие 6. Функции. Большинство языков программирования используют понятия функции и процедуры. C++ формально не поддерживает понятие процедуры,
Выражения языка Си(ч.1) Лекция 2. Базовые типы данных.
Лекция 10 ОбъектыЛекция 10 ОбъектыООП Инкапсуляция Возможность совместного хранения данных и кода для их обработки Наследование Возможность расширять существующие.
Лекция 14 Динамические данные. Виды памяти Существует три вида памяти: статическая, стековая и динамическая. Статическая память выделяется еще до начала.
ПРОГРАММИРОВАНИЕ/ ЯЗЫКИ ПРОГРАММИРОВАНИЯ Лекция 2 Время жизни и области видимости программных объектов (весенний семестр 2012 г.) Доцент Кафедры вычислительных.
Лекция 9 Приведение типов. Классификация типов Типы С++ Пользовательские Встроенные (Фундаментальные) Адресные Арифтметические void Указатели Ссылки Массивы.
Время жизни и области видимости программных объектов Преподаватель: Доцент Кафедры ВС, к.т.н. Поляков Артем Юрьевич © Кафедра вычислительных систем ФГОБУ.
Функции Лекция 8. Назначение функций Функции - самостоятельные программные единицы, спроектированные для решения конкретной задачи. Функции по структуре.
Лекция 6 Функции. Объявления и определения Объявление функции – указание имени функции, а также входных и выходных параметров Определение функции – указание.
Объектно-ориентированное программирование С++. Лекция 6 Карпов В.Э.
УКАЗАТЕЛИ. Переменная - это именованная область памяти с заданным типом. [=значение]; int a; //Переменная типа integer с именем a int b=2;// Переменная.
Данные в Visual Basic. Типы данных ДАННЫЕ переменные величины постоянные величины.
Лекция 6 Функции. Объявления и определения Объявление функции – указание имени функции, а также входных и выходных параметров Определение функции – указание.
Дружественные функции Дружественные функции – это функции, объявленные вне класса, но имеющие доступ к закрытым и защищенным полям данного класса Дружественная.
Транксрипт:

ЛЕКЦИЯ 7 КЛАССЫ ПАМЯТИ И ОБЛАСТЬ ДЕЙСТВИЯ ОБЪЕКТОВ

Класс памяти определяет: область действия переменной; время, в течение которого переменная может сохранять свое значение. Классы памяти: - автоматические (внутренние auto), - внешние (extern), - статически внутренние и - статически внешние (static) - регистровые (register)

Автоматические переменные main ( ) { int x; //по умолчанию x,y int y; //являются автоматическими } main ( ) { auto int x; //явно подчеркнуто с помощью auto int y; //ключевого слова auto... } Ключевое слово auto программистами редко используется. В каждой функции программы имеются свои автоматические переменные, которые создаются во время вызова функций и уничтожаются при выходе их функции. Для этого используется стек памяти.

Регистровые переменные (локальные, автоматические) register int count; Объекты хранятся в быстродействующей памяти - регистрах процессора register int x; x=0xff; scanf(%d,&x); // неверно Подсказка, а не требование Если применяется цикл for, то компилятор сам может принять решение использовать регистр для отслеживания изменения индекса

Внешние переменные Описываются с помощью ключевого слова extern, доступны во всех файлах программы, существуют постоянно все время работы программы. ЗАМЕТИМ: функция автоматически видна во всех модулях программы.

//файл file1.cpp int x, y; //объявление глобальных переменных main ( ) {… } fun1 {..... } //файл file2.cpp extern int x; //объявление внешней переменной, //созд-е ссылки на внешний объект fun 2 ( ) {..... x++; }

Статические переменные (Static) Доступны только внутри функции, в которой они описаны, но существуют все время работы программы, сохраняя свои значения между вызовами функции.

void fun() {int x=1; // static int y=1; printf("%d %d\n",x++,y++); } X Y Внутренняя статическая void fun(); void main() {int i; printf("X Y\n"); for(i=1;i

2. Внешние статические переменные Описывается вне функции с использованием ключевого слова static. Используется только функциями файла, в которых она описана, причем только после описания переменной. Компилятор резервирует фиксированный блок памяти под внешние и статические переменные и они доступны программе на протяжении всего времени ее работы. !

Класс памяти Ключ. слово Время жизни Место опис-я Область дейст-я Автомат-йAutoВременноЛок-явнутри блока Регистро вый Register ВременноЛок-явнутри блока Статич. внутр-й StaticПостоян.Локаль ная внутри блока Внеш- ний Extern Постоян.Глоб. (все файлы) вне блока Внеш. Статиче- ский Static Постоян. Глоб. (один файл) вне блока

Инициализация переменных и массивов Постоянная переменная или массив инициализируется нулями (статические и внешние). Если часть элементов массива получает значения в процессе работы программы, то оставшаяся часть либо мусор (внутренняя переменная), либо нули (внешняя). Если часть элементов массива получает значения при инициализации, то оставшиеся элементы инициализируются нулями соответствующих типов. Значения временных переменных и временных массивов не определены (содержат мусор).

int x; //x = 0 float y [5]; //y [0] = 0.0,..., y [4] = 0.0 float *pnt; // pnt = 0 char mas [4] //mas [0] = \0, …, mas [3] = \0 main ( ) {…..} int x; //x = 0 float y [5]; //y [0] = 0.0,..., y [4] = 0.0 float *pnt; // pnt = 0 char mas [4] //mas [0] = \0, …, mas [3] = \0 main ( ) {…..}

Поименованные области Объявление поименованной области или пространства имен имеет вид namespase [имя области] { объявления } и определяет пространство имен функций, классов и переменных, находящихся в отдельной области видимости. Препятствует конфликту имен объектов, объявленных в разных местах программы.

namespase one { int i, j; float x, y; int fun1 (int, int); void func2 ( floit *); } namespase two { int x, y; float fun1 (float *); void func2 ( float *);//При этом прототипы //func2 одинаковые, а реализации разные }

Расширим поименованную область: namespase one { int k, n, m; //объявл. новых переменных float fun1 (float, float); //перегрузка функ-и fun1 void fun3 ( int *, int); //объявл. новой функции } float one : : fun1 (float, float) //опред. функции {... } one : : i = 1; //опред. переменной one : : fun1(1.5, 10); //вызов функции

Можно объявить объект доступным вне своего пространства с использованием оператора using, после чего объект можно использовать без явного указания имени области: using one : : i; i = 10; Напомним: char str[40]; int func( ) { char str;... str = A; : : str = string ; } Использование операции области видимости

ВСЕ