- •2)Этапы изготовления загрузочного модуля.
- •4)Типы данных.
- •5)Описание типов переменных и именованных констант.
- •6) Классы памяти, область действия, область видимости, время жизни переменных
- •7) Уточнение типа константы (литерала).
- •8)Выражения. Арифметические операции, операции отношения.
- •12) Операция явного приведения типа. Правила преобразования операндов при вычислении выражений. Приоритет операций и порядок их выполнения.
- •Int main(){ // или просто main()
- •14) Форматный ввод-вывод. Функции ввода и вывода;
- •15) Управляющая строка: управляющие символьные константы, поясняющий текст, спецификации преобразования (флаги, ширина, точность, модификаторы, типы преобразования).
- •16) Оператор- выражение. Примеры использования.
- •17) Оператор безусловного перехода. Примеры использования.
- •18) Операторы условного перехода: switch. Примеры использования.
- •19) Операторы условного перехода: if. Примеры использования.
- •20) Операторы цикла: while, do while. Примеры использования.
- •21)Операторы цикла: for. Примеры использования
- •22)Внутреннее представление целых данных.
- •23) Внутреннее представление данных с плавающей точкой
- •24) Другие операторы: break, continue, return. Примеры использования
- •25) Понятие указателя. Виды указателей. Их описание
- •26) Специальные операции, связанные с указателями. Стандартные операции, применимые к указателям.
- •27) Инициализация указателей.
- •28) Одномерные массивы. Описание массивов, их инициализация.
- •29) Связь одномерных массивов с указателями. Динамическое выделение памяти для одномерных массивов.
- •30) Одномерные массивы. Описание массивов, их инициализация.
- •31) Связь двумерных массивов с указателями. Динамическое выделение памяти для двумерных массивов.
- •32) Функции пользователя. Прототипы функций (объявление функций). Структура функции пользователя. Вызов функции. Виды функций.
- •33) Функции пользователя. Способы передачи информации между функциями.
- •34) Функции пользователя. Механизм передачи аргументов в функцию. Передача аргументов функции: передача значений, передача адресов. Возврат результатов из функции.
- •35) Соответствие между фактическими и формальными аргументами. Использование указателей в качестве аргументов. Возврат результатов из функции.
- •36) Понятие ссылки, ее описание. Использование ссылок для передачи аргументов в функцию и обратно.
- •37) Виды функций. Функции с переменным числом аргументов.
- •38) Виды функций. Функции с аргументами, заданными по умолчанию. Inline-функции.
- •39) Виды функций. Рекурсивные функции.
- •40) Виды функций. Перегруженные функции.
- •41) Виды функций. Шаблоны функций.
- •Inline - функция
- •42) Передача аргументов функции main(). Возврат из функции main().
- •43) Описание строк и символов. Функции ввода-вывода символов и строк.
- •44) Действия над строками и символами.
- •46.Использование указателей на строки. Выделение памяти под строку и под массив строк.
- •47.Типы данных, задаваемые пользователем. Оператор typedef. Перечислимый тип
- •48.Структурированный тип данных: структуры, их описание, доступ к полям структуры, вложенные структуры, указатель на структуру, массивы структур
- •49.Разновидности структуры: битовые поля, смеси (объединения). Использование их для построения сложных структур.
- •50.Файлы в с. Способы обмена. Файловый тип. Описание файлов.
- •51.Файлы в с. Потоковый обмен: блоковый, форматный.
- •53.Объекты и классы. Описание классов. Объявление объектов.
- •2 Способа вызова:
- •54Указатель this.
- •55.Конструкторы и деструкторы. Их назначение. Виды конструкторов.
- •61) Наследование. Производный класс. Конструкторы и деструкторы производных классов.
- •62) Множественное наследование.
6) Классы памяти, область действия, область видимости, время жизни переменных
[класс памяти] [const] тип имя [инициализатор];
где
класс памяти - может принимать одно из значений auto (автоматическая), extern (внешняя), static (статическая) и register (регистровая). По умолчанию принимается auto.
const - модификатор показывает, что значение переменной изменять нельзя.
Такую переменную называют именованной константой, или просто константой. (Отличается от константы – литерала тем, что имеет имя).
Инициализатор – присвоение значений переменным, именованным константам. При описании можно присвоить переменной начальное значение, это называется инициализацией. Инициализатор можно записывать в двух формах — со знаком равенства:
=значение
или в круглых скобках:
( значение )
Константа должна быть инициализирована при объявлении. В одном операторе можно описать несколько переменных одного типа, разделяя их запятыми.
Примеры:
short int а = 1; // целая переменная а
const char С = ' С '; // символьная константа С
char s. sf = 'f '; // инициализация относится только к sf
char t (54); // либо t=54
float с = 0.22, x(3), sum;
int k,p=0, s=100,d;
Если тип инициализирующего значения не совпадает с типом переменной, выполняются преобразования типа по определенным правилам.
!!!!!
Описание переменной, кроме типа и класса памяти, явно или по умолчанию задает ее область действия. Класс памяти и область действия зависят не только от собственно описания, но и от места его размещения в тексте программы.
Область действия идентификатора — это часть программы, в которой его можно использовать для доступа к связанной с ним области памяти. В зависимости от области действия переменная может быть локальной или глобальной. Если переменная определена внутри блока (блок ограничен фигурными скобками), она называется локальной, область ее действия — от точки описания до конца блока, включая все вложенные блоки. Если переменная определена вне любого блока, она называется глобальной и областью ее действия считается файл, в котором она определена, от точки описания до его конца.
Класс памяти определяет время жизни и область видимости программного объекта (в частности, переменной). Если класс памяти не указан явным образом, он определяется компилятором исходя из контекста объявления.
Время жизни может быть постоянным (в течение выполнения программы) и временным (в течение выполнения блока).
Областью видимости идентификатора называется часть текста программы, из которой допустим обычный доступ к связанной с идентификатором областью памяти. Чаще всего область видимости совпадает с областью действия. Исключением является ситуация, когда во вложенном блоке описана переменная с таким же именем. В этом случае внешняя переменная во вложенном блоке невидима, хотя он и входит в ее область действия. Тем не менее к этой переменной, если она глобальная, можно обратиться, используя операцию доступа к области видимости ::.
Для задания класса памяти используются следующие спецификаторы:
auto — автоматическая переменная. Память под нее выделяется в стеке и при необходимости инициализируется каждый раз при выполнении оператора, содержащего ее определение. Освобождение памяти происходит при выходе из блока, в котором описана переменная. Время ее жизни — с момента описания до конца блока. Для глобальных переменных этот спецификатор не используется, а для локальных он принимается по умолчанию, поэтому задавать его явным образом большого смысла не имеет.
extern — означает, что переменная определяется в другом месте программы
(в другом файле или дальше по тексту). Используется для создания переменных, доступных во всех модулях программы, в которых они объявлены.
static — статическая переменная. Время жизни — постоянное. Инициализируется один раз при первом выполнении оператора, содержащего определение переменной.
В зависимости от расположения оператора описания статические переменные могут быть глобальными и локальными. Глобальные статические переменные видны только в том модуле, в котором они описаны.
register — аналогично auto, но память выделяется по возможности в регистрах процессора. Если такой возможности у компилятора нет, переменные обрабатываются как auto.
Если при определении начальное значение переменных явным образом не задается, компилятор присваивает глобальным и статическим переменным нулевое значение соответствующего типа. Автоматические переменные не инициализируются.
Имя переменной должно быть уникальным в своей области действия (например, в одном блоке не может быть двух переменных с одинаковыми именами).
Описание переменной может выполняться в форме объявления или определения. Объявление информирует компилятор о типе переменной и классе памяти, а определение содержит, кроме этого, указание компилятору выделить память в соответствии с типом переменной. В C++ большинство объявлений являются одновременно и определениями. В приведенном выше примере только описание 3 является объявлением, но не определением.
Переменная может быть объявлена многократно, но определена только в одном месте программы, поскольку объявление просто описывает свойства переменной, а определение связывает ее с конкретной областью памяти.
!!!!