🗊Презентация Указатели. Общие сведениях об указателях

Нажмите для полного просмотра!
Указатели. Общие сведениях об указателях, слайд №1Указатели. Общие сведениях об указателях, слайд №2Указатели. Общие сведениях об указателях, слайд №3Указатели. Общие сведениях об указателях, слайд №4Указатели. Общие сведениях об указателях, слайд №5Указатели. Общие сведениях об указателях, слайд №6Указатели. Общие сведениях об указателях, слайд №7Указатели. Общие сведениях об указателях, слайд №8Указатели. Общие сведениях об указателях, слайд №9Указатели. Общие сведениях об указателях, слайд №10Указатели. Общие сведениях об указателях, слайд №11Указатели. Общие сведениях об указателях, слайд №12Указатели. Общие сведениях об указателях, слайд №13Указатели. Общие сведениях об указателях, слайд №14Указатели. Общие сведениях об указателях, слайд №15Указатели. Общие сведениях об указателях, слайд №16Указатели. Общие сведениях об указателях, слайд №17Указатели. Общие сведениях об указателях, слайд №18Указатели. Общие сведениях об указателях, слайд №19

Вы можете ознакомиться и скачать презентацию на тему Указатели. Общие сведениях об указателях. Доклад-сообщение содержит 19 слайдов. Презентации для любого класса можно скачать бесплатно. Если материал и наш сайт презентаций Mypresentation Вам понравились – поделитесь им с друзьями с помощью социальных кнопок и добавьте в закладки в своем браузере.

Слайды и текст этой презентации


Слайд 1





Указатели
Лекция №7
Описание слайда:
Указатели Лекция №7

Слайд 2





Общие сведениях об указателях
 указатель - переменная, которая содержит адрес другой переменной
Указуемая переменная – переменная, адрес которой хранится в указателе
Описание слайда:
Общие сведениях об указателях указатель - переменная, которая содержит адрес другой переменной Указуемая переменная – переменная, адрес которой хранится в указателе

Слайд 3





Исходные предпосылки
Физическая память компьютера – одномерный массив
Необходимость гибкой работы с адресами оперативной памяти
Си находится между Паскалем и Ассемблером
Широкое применение Си для специализированных ЭВМ с ограниченными ресурсами
Необходимость управления памятью – резервирование и освобождение в процессе работы программы
Описание слайда:
Исходные предпосылки Физическая память компьютера – одномерный массив Необходимость гибкой работы с адресами оперативной памяти Си находится между Паскалем и Ассемблером Широкое применение Си для специализированных ЭВМ с ограниченными ресурсами Необходимость управления памятью – резервирование и освобождение в процессе работы программы

Слайд 4





Формат описания указателя
тип *имя;
* в описании – признак указателя
тип относится к указуемой переменной
Примеры
int *p;
float *q;
char *s;
Описание слайда:
Формат описания указателя тип *имя; * в описании – признак указателя тип относится к указуемой переменной Примеры int *p; float *q; char *s;

Слайд 5





Свойства указателей
освобождают от необходимости помнить адреса ячеек памяти
поддерживают операции адресной арифметики
перемещение от одной ячейки памяти к другой
сравнение указателей
Описание слайда:
Свойства указателей освобождают от необходимости помнить адреса ячеек памяти поддерживают операции адресной арифметики перемещение от одной ячейки памяти к другой сравнение указателей

Слайд 6





Инициализация указателей
int A[5]={2,1,5,3,4};
 int *p=&A[0];//или int *p=A;
Описание слайда:
Инициализация указателей int A[5]={2,1,5,3,4}; int *p=&A[0];//или int *p=A;

Слайд 7





Обращение к содержимому
a=*p
* в выражении означает доступ к указуемому содержимому
Описание слайда:
Обращение к содержимому a=*p * в выражении означает доступ к указуемому содержимому

Слайд 8





Этапы работы с указателем
Определение указателя
Присваивание указателю адреса другой переменной
Работа с переменной через указатель
int a=5, *p,b=0;
p=&a;//обязательно присвоить адрес!!!
b=*p;
!!! Использование указателя со случайным адресом ведет к непредсказуемым результатам
Описание слайда:
Этапы работы с указателем Определение указателя Присваивание указателю адреса другой переменной Работа с переменной через указатель int a=5, *p,b=0; p=&a;//обязательно присвоить адрес!!! b=*p; !!! Использование указателя со случайным адресом ведет к непредсказуемым результатам

Слайд 9





Пустой указатель
int *t=NULL;
Пустой указатель – нулевой адрес
При обращении к нему формируется системное сообщение об ошибке
Описание слайда:
Пустой указатель int *t=NULL; Пустой указатель – нулевой адрес При обращении к нему формируется системное сообщение об ошибке

Слайд 10





Работа с массивами с помощью указателей
Описание слайда:
Работа с массивами с помощью указателей

Слайд 11





Операции адресной арифметики
Обращение к содержимому со смещением
*(p+i) – содержимое ячейки на i элементов вперед
*(p-i) – содержимое ячейки на i элементов назад
смещение должно быть целым
размер содержимого учитывается автоматически
указатель не изменяется
«Перемещение» вдоль памяти
p++ - на 1 элемент вперед
p-- - на 1 элемент назад
p+i – на i элементов вперед
p-i – на i элементов назад
указатель изменяется
Описание слайда:
Операции адресной арифметики Обращение к содержимому со смещением *(p+i) – содержимое ячейки на i элементов вперед *(p-i) – содержимое ячейки на i элементов назад смещение должно быть целым размер содержимого учитывается автоматически указатель не изменяется «Перемещение» вдоль памяти p++ - на 1 элемент вперед p-- - на 1 элемент назад p+i – на i элементов вперед p-i – на i элементов назад указатель изменяется

Слайд 12





Операции адресной арифметики
Cравнение указателей
p<q ;адрес в указателе p ближе к началу, чем адрес в указателе q?
p==q; указатели указывают на одну и ту же ячейку? 
Вычитание указателей
k=p-q;
результат – целое число, показывающее, на сколько элементов адрес в указателе p дальше от начала памяти относительно адреса в указателе q
Описание слайда:
Операции адресной арифметики Cравнение указателей p<q ;адрес в указателе p ближе к началу, чем адрес в указателе q? p==q; указатели указывают на одну и ту же ячейку? Вычитание указателей k=p-q; результат – целое число, показывающее, на сколько элементов адрес в указателе p дальше от начала памяти относительно адреса в указателе q

Слайд 13





Примеры операций над указателями
int X[]={5,1,4,2,3}, *p,*q, i=0, k=0,j=0;
p=&X[2];
q=&X[4];
p--;
k=*(p-1);//k=?
if(p<q)
	j=q-p;//j=?
if(*p>*q)
    i=(*p)-(*q);//i=?
Описание слайда:
Примеры операций над указателями int X[]={5,1,4,2,3}, *p,*q, i=0, k=0,j=0; p=&X[2]; q=&X[4]; p--; k=*(p-1);//k=? if(p<q) j=q-p;//j=? if(*p>*q) i=(*p)-(*q);//i=?

Слайд 14





Сравнение массивов и указателей
Сходства
Обеспечивают доступ к элементам по номеру
Тип данных учитывает размер элементов
Различия
Адрес массива изменить нельзя- массив привязан к конкретной области памяти
Адрес, записанный в указателе, можно изменить с помощью операций адресной арифметики
Описание слайда:
Сравнение массивов и указателей Сходства Обеспечивают доступ к элементам по номеру Тип данных учитывает размер элементов Различия Адрес массива изменить нельзя- массив привязан к конкретной области памяти Адрес, записанный в указателе, можно изменить с помощью операций адресной арифметики

Слайд 15





Эквивалентность операций над указателями и массивами
int X[5],*p,k=2;
p=X;
X ~ &X[0]
X+k ~ &X[0]
p+k ~ &p[k]
*(p+k) ~ p[k]
Работу с указателями можно сделать почти неотличимой от работы с массивами
Описание слайда:
Эквивалентность операций над указателями и массивами int X[5],*p,k=2; p=X; X ~ &X[0] X+k ~ &X[0] p+k ~ &p[k] *(p+k) ~ p[k] Работу с указателями можно сделать почти неотличимой от работы с массивами

Слайд 16





Обработка массива с помощью указателя 
int X[]={5,1,4,2,3}, *p,*q, i=0, n=5,s=0;
//Способ 1
p=X;
for(i=0;i<n,i++)
	s=s+p[i];// указатель на месте, индекс двигается
//Способ 2
for(p=X;p<X+n,p++)
	s=s+(*p);// указатель двигается
Описание слайда:
Обработка массива с помощью указателя int X[]={5,1,4,2,3}, *p,*q, i=0, n=5,s=0; //Способ 1 p=X; for(i=0;i<n,i++) s=s+p[i];// указатель на месте, индекс двигается //Способ 2 for(p=X;p<X+n,p++) s=s+(*p);// указатель двигается

Слайд 17





Поиск элемента с помощью указателей
int X[]={5,1,4,2,3}, *p,*q, i=0, n=5,s=0;
for(p=X;p<X+n;p++)//что делает фрагмент?
     if(*p==4)
		q=p;
s=*q;
q=X;
for(p=X+1;p<X+n;p++)//что делает фрагмент?
     if(*p<*q)
         q=p;
s=*q;
Описание слайда:
Поиск элемента с помощью указателей int X[]={5,1,4,2,3}, *p,*q, i=0, n=5,s=0; for(p=X;p<X+n;p++)//что делает фрагмент? if(*p==4) q=p; s=*q; q=X; for(p=X+1;p<X+n;p++)//что делает фрагмент? if(*p<*q) q=p; s=*q;

Слайд 18





Перестановки элементов с помощью указателей
int X[]={5,1,4,2,3}, *p,*q, i=0, n=5,s=0;
p=X;
q=p+4;
s=*p;
*p=*q;
*q=s;
for(q=p;q<p+n;q++)
   printf(“%d”,*q);
Описание слайда:
Перестановки элементов с помощью указателей int X[]={5,1,4,2,3}, *p,*q, i=0, n=5,s=0; p=X; q=p+4; s=*p; *p=*q; *q=s; for(q=p;q<p+n;q++) printf(“%d”,*q);

Слайд 19





Выводы
Указатели позволяют гибко работать с оперативной памятью
Указатель позволяет работать с памятью как с массивом с помощью адресной арифметики
Указатель позволяет «перемещаться» вдоль памяти, массив жестко привязан к участку памяти
Тип данных при работе с указателями учитывается автоматически
Указатели позволяют динамически работать с памятью во время работы программы
Описание слайда:
Выводы Указатели позволяют гибко работать с оперативной памятью Указатель позволяет работать с памятью как с массивом с помощью адресной арифметики Указатель позволяет «перемещаться» вдоль памяти, массив жестко привязан к участку памяти Тип данных при работе с указателями учитывается автоматически Указатели позволяют динамически работать с памятью во время работы программы



Похожие презентации
Mypresentation.ru
Загрузить презентацию