Презентация «Указатели. Иллюстративный материал к лекциям по алгоритмизации и программированию»

Смотреть слайды в полном размере
Презентация «Указатели. Иллюстративный материал к лекциям по алгоритмизации и программированию»

Вы можете ознакомиться с презентацией онлайн, просмотреть текст и слайды к ней, а также, в случае, если она вам подходит - скачать файл для редактирования или печати. Документ содержит 34 слайда и доступен в формате ppt. Размер файла: 411.33 KB

Просмотреть и скачать

Pic.1
Указатели Лекция 10
Указатели Лекция 10
Pic.2
Оглавление Описание указателей Инициализация указателей Действия с указателями Связь массивов и указ
Оглавление Описание указателей Инициализация указателей Действия с указателями Связь массивов и указателей Динамические массивы (одномерные) Динамические матрицы
Pic.3
Описание указателя Указатели - переменные для хранения адресов областей памяти. В С++ различают три
Описание указателя Указатели - переменные для хранения адресов областей памяти. В С++ различают три вида указателей: на объект; на функцию; на тип void.
Pic.4
Указатель на функцию Содержит адрес в сегменте кода, по которому располагается исполняемый код функц
Указатель на функцию Содержит адрес в сегменте кода, по которому располагается исполняемый код функции. Указатель функции имеет тип «указатель функции, возвращающей значение заданного типа и имеющей …
Pic.5
Указатель на объект Содержит адрес области памяти, в которой хранятся данные определенного типа (осн
Указатель на объект Содержит адрес области памяти, в которой хранятся данные определенного типа (основного или составного). Объявление указателя на объект : тип *имя;
Pic.6
Указатель на void Применяется, когда тип объекта не определен. Указателю на void можно присвоить зна
Указатель на void Применяется, когда тип объекта не определен. Указателю на void можно присвоить значение указателя любого типа, сравнивать его с любыми указателями, но перед выполнением каких-либо …
Pic.7
Использование указателей (1 из 3) при работе с динамической памятью, называемой кучей (heap). Куча -
Использование указателей (1 из 3) при работе с динамической памятью, называемой кучей (heap). Куча - свободная память, в которой можно во время выполнения программы выделять место в соответствии с …
Pic.8
Использование указателей (2 из 3) Перед использованием указателя его надо инициализировать, т. е. пр
Использование указателей (2 из 3) Перед использованием указателя его надо инициализировать, т. е. присвоить значение. Использование неинициализированных указателей - источник ошибок в программах. …
Pic.9
Инициализация указателей (1 из 3) Способы инициализации указателя: Присваивание указателю адреса сущ
Инициализация указателей (1 из 3) Способы инициализации указателя: Присваивание указателю адреса существующего объекта Присваивание указателю адреса области памяти в явном виде Присваивание пустого …
Pic.10
Присваивание указателю адреса существующего объекта с помощью операции получения адреса: int а=5; //
Присваивание указателю адреса существующего объекта с помощью операции получения адреса: int а=5; // целая переменная int* p=&a // в указатель записывается адрес а int* р (&a); // то же самое …
Pic.11
Присваивание указателю адреса области памяти в явном виде char* vp = (char *) 0xB8000000; Здесь 0хВ8
Присваивание указателю адреса области памяти в явном виде char* vp = (char *) 0xB8000000; Здесь 0хВ8000000 - шестнадцатеричная константа, (cha r *) - операция приведения типа: константа преобразуется …
Pic.12
Присваивание указателю адреса области памяти в явном виде (доп) Пример. char * const key_byte =(char
Присваивание указателю адреса области памяти в явном виде (доп) Пример. char * const key_byte =(char *)1047; Значение указателя невозможно изменить, он всегда показывает на байт с адресом 1047 …
Pic.13
Присваивание указателю пустого значения Можно использовать константу NULL, определенную как указател
Присваивание указателю пустого значения Можно использовать константу NULL, определенную как указатель, равный нулю, Можно использовать и просто 0 int* sx = NULL int* rz = 0;
Pic.14
Выделение участка памяти (1) А) c помощью операции new, синтаксис: new имя_типа (иницииализатор) Б)
Выделение участка памяти (1) А) c помощью операции new, синтаксис: new имя_типа (иницииализатор) Б) с помощью функций malloc() и calloc(). Синтаксис: …
Pic.15
Выделение участка памяти (2) Примеры: int* n = new int; //1 int* b = new int (10); //2 int* q = new
Выделение участка памяти (2) Примеры: int* n = new int; //1 int* b = new int (10); //2 int* q = new int [10]; //3 int* u = (int *) malloc (sizeof (int)); //4 int* u = (int *) сalloc (1, sizeof …
Pic.16
Действия с указателями С указателями можно выполнять следующие операции: разыменование, или косвенно
Действия с указателями С указателями можно выполнять следующие операции: разыменование, или косвенное обращение к объекту (*), присваивание, приведение типов, сложение с константой, вычитание, …
Pic.17
Операции: разадресации, или разыменования Разыменование - доступ к величине, адрес которой хранится
Операции: разадресации, или разыменования Разыменование - доступ к величине, адрес которой хранится в указателе. Можно использовать как для получения значения, так и для изменения значения: char а; …
Pic.18
Приведение типов для указателей (1) Пример: #include <iostream. h> void main() { unsigned long
Приведение типов для указателей (1) Пример: #include <iostream. h> void main() { unsigned long L=0x12345678; char *cp=(char *)&L; int *ip=(int *)&L; long *lp=(long *)&L; …
Pic.19
Приведение типов для указателей (2) На экран возможен следующий вывод: Адрес L=0x8fe10ffc cp= 0x8fe1
Приведение типов для указателей (2) На экран возможен следующий вывод: Адрес L=0x8fe10ffc cp= 0x8fe10ffc *cp= 0x78 ip= 0x8fe10ffc *ip= 0x5678 lp= 0x8fe10ffc *lp= 0x12345678 Присваивание без явного …
Pic.20
Схема размещения в памяти переменной L типа unsigned long
Схема размещения в памяти переменной L типа unsigned long
Pic.21
Арифметические операции с указателями (1) Инкремент char * р = new char [5]: p++; // значение р увел
Арифметические операции с указателями (1) Инкремент char * р = new char [5]: p++; // значение р увеличивается на 1 long * q = new long [53]; q++ ; // значение q увеличивается на 4 Декремент сложение …
Pic.22
Арифметические операции с указателями (2) Вычитание Разность двух указателей — это разность их значе
Арифметические операции с указателями (2) Вычитание Разность двух указателей — это разность их значений, деленная на размер типа в байтах Суммирование двух указателей не допускается.
Pic.23
Связь массивов и указателей Имя массива – указатель на его начало int A[8]={12, 0, 2, 3, 4, 5, 65, 8
Связь массивов и указателей Имя массива – указатель на его начало int A[8]={12, 0, 2, 3, 4, 5, 65, 8, 3}; int *p; p=A; p=&A[0]; p=&A; Обращение к отдельным элементам массива int i=2, x=*p; …
Pic.24
Динамическое создание массивов #include <iostream. h> void main() { int n; //размерность масси
Динамическое создание массивов #include <iostream. h> void main() { int n; //размерность массива int *mm; cout<<"\n Введите количество элементов массива n="; cin>> n; // …
Pic.25
Динамическое создание матрицы (1) Способ 1. Использование одномерного динамического массива int n,m;
Динамическое создание матрицы (1) Способ 1. Использование одномерного динамического массива int n,m; //размерность матрицы cout<<"\nВведите количество строк матрицы:"; cin>>n; …
Pic.26
Динамическое создание матрицы (2) Способ 2. Использование вспомогательного динамического массива ука
Динамическое создание матрицы (2) Способ 2. Использование вспомогательного динамического массива указателей Схема.
Pic.27
«Указатели. Иллюстративный материал к лекциям по алгоритмизации и программированию», слайд 27
Pic.28
План создания динамической матрицы Описать двойной указатель Задать размерность матрицы Выделить пам
План создания динамической матрицы Описать двойной указатель Задать размерность матрицы Выделить память под вспомогательный массив указателей В цикле выделить память под каждую из строк матрицы …
Pic.29
Динамическое создание матрицы (2) Способ 2. Использование вспомогательного динамического массива ука
Динамическое создание матрицы (2) Способ 2. Использование вспомогательного динамического массива указателей int n,m; //размерность матрицы cout<<"\nВведите количество строк матрицы:"; …
Pic.30
Динамическое создание матрицы (2) //заполнение массива указателей, //выделение памяти для каждой стр
Динамическое создание матрицы (2) //заполнение массива указателей, //выделение памяти для каждой строки матрицы for (int i=0; i<n; i++) matr[i]= new int[m]; //заполнение матрицы for ( i=0; i<n; …
Pic.31
Удаление матрицы //обработка элементов матрицы в соответствии // с условием задачи …. //удаление стр
Удаление матрицы //обработка элементов матрицы в соответствии // с условием задачи …. //удаление строк матрицы for (i=0; i<n; i++) delete matr[i]; //удаление вспомогательного массива указателей …
Pic.32
Итоги Рассмотренные вопросы: Указатели Понятие , способы описания и инициализации действия с указате
Итоги Рассмотренные вопросы: Указатели Понятие , способы описания и инициализации действия с указателями Связь с массивами Динамическое выделение памяти под массивы
Pic.33
Библиографический список Подбельский В. В. Язык СИ++. Учебное пособие. М. : Финансы и статистика, 20
Библиографический список Подбельский В. В. Язык СИ++. Учебное пособие. М. : Финансы и статистика, 2003. – 560 с. Павловская Т. А. C/C++. Программирование на языке высокого уровня: учебник для …
Pic.34
Автор: Саблина Наталья Григорьевна Ст. преподаватель каф. РТС УрФУ
Автор: Саблина Наталья Григорьевна Ст. преподаватель каф. РТС УрФУ


Скачать презентацию

Если вам понравился сайт и размещенные на нем материалы, пожалуйста, не забывайте поделиться этой страничкой в социальных сетях и с друзьями! Спасибо!