Содержание
- 2. Перечислимый тип данных Перечислимый тип данных предназначен для описания объектов из некоторого заданного множества. В СИ
- 3. Модификатор enum Используется для объявления перечисления, отдельного типа, состоящего из набора именованных констант, который называется списком
- 4. Модификатор enum Именованные константы списка имеют тип int. Таким образом, память соответствующая переменной перечисления - это
- 5. Модификатор enum enum[ ]{ } [, ...]; Объявление перечисления начинается с ключевого слова enum и имеет
- 6. Модификатор enum enum [, ...]; Во второй форме используется тег перечисления, который ссылается на тип перечисления.
- 7. Модификатор enum Каждый идентификатор именует элементы перечисления. По умолчанию первому перечислителю задано значение 0, а значение
- 8. Модификатор enum Перечислители могут использовать инициализаторы для переопределения значений по умолчанию, как показано в следующем примере.
- 9. Модификатор enum Каждый тип перечисления имеет базовый тип, который может быть любым целым типом, исключая char.
- 10. Модификатор enum Для перечисления утверждены следующие типы: byte, sbyte, short, ushort, int, uint, long или ulong.
- 11. Модификатор enum Например, следующий оператор назначает перечислитель Sun переменной типа int, используя приведение для преобразования enum
- 12. Модификатор enum Пример объявления перечислимого типа данных: enum day { saturday, sunday = 0, monday, tuesday,
- 13. Модификатор enum Пример объявления перечислимого типа данных: enum day { saturday, sunday = 0, monday, tuesday,
- 14. Модификатор enum Итак, переменная типа перечисления может принимать значения одной из именованных констант списка. Именованные константы
- 15. Модификатор enum Список-перечисления содержит одну или несколько конструкций вида: идентификатор [= константное выражение] Каждый идентификатор именует
- 16. Модификатор enum Использование элементов перечисления должно подчиняться следующим правилам: 1. Переменная может содержать повторяющиеся значения. 2.
- 17. Модификатор enum Пример: enum week { SUB = 0, /* 0 */ VOS = 0, /*
- 18. Модификатор enum Во втором формате используется имя тега перечисления для ссылки на тип перечисления, определяемый где-то
- 19. Модификатор enum
- 20. Модификатор enum Можно задать нулевое значение явно:
- 21. Модификатор enum Если мы изменим программу и напишем enum Token { SYMBOL, //0 NUMBER, //1 EXPRESSION
- 22. Модификатор enum Перечисления используются для большей типобезопасности и ограничения возможных значений переменной. Для того, чтобы не
- 23. Модификатор enum Например typedef enum Bool { FALSE, TRUE } Bool;
- 24. Спецификаторы (модификаторы) Обычная СИ-программа представляет собой определение функции main, которая для выполнения необходимых действий вызывает другие
- 25. Спецификаторы (модификаторы) При такой структуре исходной программы функции, находящиеся в разных исходных файлах могут использовать глобальные
- 26. Спецификаторы (модификаторы) Определение переменной вызывает выделение памяти для хранения ее значения. Класс выделяемой памяти определяется спецификатором
- 27. Спецификаторы (модификаторы) Блоки могут включать в себя составные операторы, но не определения функций. Внутренний блок называется
- 28. Спецификаторы (модификаторы) Переменная с локальным временем жизни имеет распределенную для него память и определенное значение только
- 29. Спецификаторы (модификаторы) Объект считается видимым в блоке или в исходном файле, если в этом блоке или
- 30. Спецификаторы (модификаторы) Спецификатор класса памяти в объявлении переменной может быть auto, register, static или extern. Если
- 31. Спецификаторы (модификаторы) Переменная с классом памяти auto имеет локальное время жизни и видна только в блоке,
- 32. Спецификаторы (register) Спецификатор класса памяти register предписывает компилятору распределить память для переменной в регистре, если это
- 33. Спецификаторы (register) Заметим, что спецификатор register можно применять только к локальным переменным и формальным параметрам: int
- 34. Спецификаторы (register) Регистровые переменные определяются с помощью служебного слово register перед типом register int x =
- 35. Примеры использования модификаторов (register)
- 36. Спецификаторы (static) Модификатор static позволяет связать с идентификатором фиксированный адрес (ячейку памяти). Если объект расположен по
- 37. Спецификаторы (static) Переменные, объявленные на внутреннем уровне со спецификатором класса памяти static, обеспечиваю возможность сохранить значение
- 38. Спецификаторы (static) Пример: /* объявления переменной i на внутреннем уровне с классом памяти static. */ /*
- 39. Спецификаторы (static) В приведенном примере объявлены три разные переменные с классом памяти static, имеющие одинаковые имена
- 40. Спецификаторы (static) Пример
- 41. Спецификаторы (static) Пример
- 42. Спецификаторы (extern) Переменная, объявленная локально с классом памяти extern, является ссылкой на переменную с тем же
- 43. Спецификаторы (extern) Пример: /* объявления переменной i, являющейся именем внешнего массива целых чисел, на локальном уровне
- 44. Спецификаторы (extern) Объявление с классом памяти extern требуется при необходимости использовать переменную, описанную в текущем исходном
- 45. Спецификаторы Объявление переменной со спецификатором extern информирует компилятор о том, что память для переменной выделять не
- 46. Спецификаторы Определение на глобальном уровне может задаваться в следующих формах: 1. Переменная объявлена с классом памяти
- 47. Спецификаторы Глобальная переменная может быть определена только один раз в пределах своей области видимости. В другом
- 48. Kвалификатор volatile Квалификатор volatile информирует компилятор что переменная может быть изменена не явным способом т.е. без
- 49. Kвалификатор volatile Пример: int exit = 1; while( exit ){ }; В данном случае значение переменной
- 50. Kвалификатор volatile Но если мы перед объявлением переменной поставим квалификатор volatile, то переменная будет считываться при
- 52. Скачать презентацию