Содержание
- 2. Любой объект программы (переменная, массив, функция и другие) имеют: а) необходимые атрибуты: имя – адресует область
- 3. Указатели – программные объекты, значением которых являются адреса других объектов или области памяти. Модель памяти Оперативная
- 4. При объявлении переменных типа указатель, признаком того, что вводится указатель, является *. Должно быть определено имя
- 5. int x = 3; // 4 байта для x. int *px; // Объявлен указатель. // Операция
- 6. Статические данные размещаются в стеке данных. Размещение в памяти
- 7. Операции над указателями Операции над указателями разрешены, их можно разделить на группы: специальные, предназначенные исключительно для
- 8. & – получить адрес, унарная операция, которая: может быть применена к операнду любого типа, возвращает 16-ричный
- 9. * – взять значение по адресу – унарная операция косвенной адресации (разыменования, раскрытия ссылки, обращения по
- 10. Пример int x; int k = 3; int *pk; // Переменная pk получает адрес переменной k.
- 11. Разрешается присваивать значения переменных одного типа или null (пустой адрес). int x=3; int *px; int px
- 12. Явное преобразование типа имеет синтаксис: (имя_типа) Выражение Например, y = (int) x; Неизбежна потеря данных при
- 13. Унарные ++ и -- еще называют операциями смещения указателя. Эти операции изменяют значение адреса в зависимости
- 14. Можно прибавить к адресу целое число. Новое значение определит смещение в байтах нового адреса в зависимости
- 15. Разрешается сравнивать только указатели одинакового типа или с null. Могут использоваться все операции отношения, но чаще
- 16. Приоритеты операций 1. Унарные операции косвенной адресации * и получения адреса & старше, чем все остальные.
- 17. Простые цели использования указателей. 1. Косвенная адресация. 2. Динамические массивы. 3. Указатели и функции. Практическое использование
- 18. Косвенная адресация Указатели и массивы: синтаксис языка С++ определяет имя массива как адрес его первого элемента
- 19. Обращение к элементам массива может быть выполнено не только с помощью операции [], но и с
- 20. Косвенная адресация элементов массива выполняется через указатель. int *pti; // Замечание! тип - как у элементов
- 21. Недостаток синтаксического определения массива – длина должна быть задана константой. Инструменты для использования массивов условно переменной
- 22. Использование константного выражения Определяем длину массива как define константу: #define N 100 // Наибольшее значение длины
- 23. Длина массива задана константой, она заведомо большего размера, чем требуется. Для адресации используется часть выделенной памяти.
- 24. При статическом распределении памяти для элементов массива есть существенный недостаток – общее количество элементов массива должно
- 25. Для статических массивов память выделяется на этапе компиляции программы в стеке данных, и ее размер не
- 26. Механизмы выделения памяти в С++ В С++ для работы с динамической памятью используются операции new и
- 27. Семантика Операция new пытается открыть объект с именем «имя_объекта» путем выделения sizeof (имя_объекта) байт в куче.
- 28. Пример Type *nameptr; // Здесь Type - любой тип кроме функции ... if (!(nameptr = new
- 29. Указатели и функции 1. Передача параметров в функцию (из функции) по адресу. Параметр по значению: при
- 30. Параметр по ссылке В С++ признак передачи параметра по ссылке указан символом & в списке формальных
- 31. Массивы как параметры функций Особенность массива в том, что он является указателем. При передаче массива в
- 32. Выводы При обращении к функции указывается только имя массива и длина. Достоинства: использование массивов переменной длины,
- 33. Функции, возвращающие указатели Функция может вернуть значение: а) переменной базового типа, тогда ее тип равен одному
- 34. Пример. Функция получения массива Динамическая память может быть выделена в любом месте программы, в том числе
- 35. Реализация функции int * get_Arr (int len) { int * A; A = new int[len]; //
- 36. Обращение к функции В main чтобы получить значение, должен быть объявлен указатель: int *mas; Функция создает
- 38. Скачать презентацию