🗊 Презентация Использование динамической памяти Адресация оперативной памяти

Категория: Образование
Нажмите для полного просмотра!
Использование динамической памяти Адресация оперативной памяти, слайд №1 Использование динамической памяти Адресация оперативной памяти, слайд №2 Использование динамической памяти Адресация оперативной памяти, слайд №3 Использование динамической памяти Адресация оперативной памяти, слайд №4 Использование динамической памяти Адресация оперативной памяти, слайд №5 Использование динамической памяти Адресация оперативной памяти, слайд №6 Использование динамической памяти Адресация оперативной памяти, слайд №7 Использование динамической памяти Адресация оперативной памяти, слайд №8 Использование динамической памяти Адресация оперативной памяти, слайд №9 Использование динамической памяти Адресация оперативной памяти, слайд №10 Использование динамической памяти Адресация оперативной памяти, слайд №11 Использование динамической памяти Адресация оперативной памяти, слайд №12 Использование динамической памяти Адресация оперативной памяти, слайд №13 Использование динамической памяти Адресация оперативной памяти, слайд №14 Использование динамической памяти Адресация оперативной памяти, слайд №15 Использование динамической памяти Адресация оперативной памяти, слайд №16 Использование динамической памяти Адресация оперативной памяти, слайд №17 Использование динамической памяти Адресация оперативной памяти, слайд №18 Использование динамической памяти Адресация оперативной памяти, слайд №19 Использование динамической памяти Адресация оперативной памяти, слайд №20 Использование динамической памяти Адресация оперативной памяти, слайд №21 Использование динамической памяти Адресация оперативной памяти, слайд №22 Использование динамической памяти Адресация оперативной памяти, слайд №23

Содержание

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

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


Слайд 1


Глава 5. Использование динамической памяти 5.1 Адресация оперативной памяти. Минимальная адресуемая единица памяти – байт. Физический адрес Аф –...
Описание слайда:
Глава 5. Использование динамической памяти 5.1 Адресация оперативной памяти. Минимальная адресуемая единица памяти – байт. Физический адрес Аф – номер байта оперативной памяти. Адресация по схеме «база+смещение»: Аф = Аб + Асм, где Аб – адрес базы – адрес, относительно которого считают остальные адреса; Асм – смещение – расстояние от базового адреса до физического. Указатель – тип данных, используемый для хранения смещений. В памяти занимает 4 байта, адресует сегмент размером V = 232 = 4 Гб. Базовый адрес = адрес сегмента.

Слайд 2


5.2 Указатели и операции над ними [][][] [И2]*[=]; Где : - признак изменчивости содержимого по адресу указателя. Задается ключевым словом const. При...
Описание слайда:
5.2 Указатели и операции над ними [][][] [И2]*[=]; Где : - признак изменчивости содержимого по адресу указателя. Задается ключевым словом const. При этом значение содержимого памяти, которую адресует указатель, нельзя менять. Может отсутствовать. - признак изменчивости указателя. Задается ключевым словом const. При этом значение самого указателя нельзя менять. Может отсутствовать. - тип данных, адресуемых указателем. Любой тип, определенный в С++, в том числе void. - тип указателя. Определяется моделью памяти. Может быть far или near. Если тип указателя не указан, принимается near.

Слайд 3


Примеры определения указателей
Описание слайда:
Примеры определения указателей

Слайд 4


5.2.1 Типизированные и нетипизированные указатели Различают указатели: типизированные – адресующие данные конкретного типа; нетипизированные – не...
Описание слайда:
5.2.1 Типизированные и нетипизированные указатели Различают указатели: типизированные – адресующие данные конкретного типа; нетипизированные – не связанные с данными определенного типа. Объявление типизированного указателя: int *b,*c ; float *s ,double *f; long double *l; Объявление нетипизированного указателя: void * ; Этот указатель создан как бы «на все случаи жизни». Он отличается от других отсутствием сведений о размере соответствующего участка памяти. Поэтому его легко связывать с указателями других типов.

Слайд 5


Нулевой указатель В С++ определена адресная константа NULL; Эта константа определяет адрес, который никуда не указывает или «нулевой указатель». Его...
Описание слайда:
Нулевой указатель В С++ определена адресная константа NULL; Эта константа определяет адрес, который никуда не указывает или «нулевой указатель». Его можно присвоить указателю любого типа. Например: int *pi=NULL; float *pf=NULL; void *b=NULL; Кроме того, эту константу можно использовать в операциях сравнения при проверке логических адресных выражениях. while (pi!=NULL) do { …};

Слайд 6


5.2.2 Операции над указателями Присваивание. Допускается присваивать указателю значение другого указателя того же типа или нулевого указателя....
Описание слайда:
5.2.2 Операции над указателями Присваивание. Допускается присваивать указателю значение другого указателя того же типа или нулевого указателя. Пример: int *p1,*p2; float *p3,*p4; void *p;... {допустимые операции} p1=p2; p4=p3; p1=NULL; p=NULL; ... {недопустимые операции} p3=p2; p1=p3; Однако, при необходимости выполнить операцию присваивания, можно использовать явное переопределение типа, для приведения указателя одного типа к другому. p3=(float*)p2; p2=(int*)p3; p1=(int*)p;

Слайд 7


Операции над указателями (2) 2. Получение адреса (&). Результат операции – адрес некоторой области памяти, который можно присвоить указателю. Это...
Описание слайда:
Операции над указателями (2) 2. Получение адреса (&). Результат операции – адрес некоторой области памяти, который можно присвоить указателю. Это можно сделать: a) При помощи операции присваивания: int *pi,i=10; ... pi=&i; b) Во время инициализации указателя при его определении: float b=5.7; float *pf=&b;

Слайд 8


Операции над указателями (3) 3. Доступ к данным по указателю (операция разыменования). Полученное значение имеет тип, совпадающий с базовым типом...
Описание слайда:
Операции над указателями (3) 3. Доступ к данным по указателю (операция разыменования). Полученное значение имеет тип, совпадающий с базовым типом данных указателя. Нетипизированные указатели разыменовывать нельзя. Примеры: short c, a=5,*ptri=&a; float d,p=2.4563; void *b=&a; 1) c=*ptri; *ptri=125; При необходимости разыменовать нетипизированный указатель требуется выполнить явное преобразование типа. 3) *b=6;  *(int*)b=6; 4) b=&p; d=*b  d=*(float *)b

Слайд 9


Операции над указателями (4) 4. Операции отношения: проверка равенства (==) и неравенства (!=). Примеры: int sign = (p1 == p2); if (p1!=NULL) {….}...
Описание слайда:
Операции над указателями (4) 4. Операции отношения: проверка равенства (==) и неравенства (!=). Примеры: int sign = (p1 == p2); if (p1!=NULL) {….} 5.Арифметические операции. В С++ над указателями разрешены операции: - сложение и вычитание (аддитивные операции) инкремент или автоувеличение (++) декремент или автоуменьшение (--) В силу особенностей выполнения арифметических операций над указателями, совокупность этих операций получила название Адресной арифметики

Слайд 10


5.2.3 Адресная арифметика + n  + n*sizeof() Пример: short a, *ptrs =&a; 1) ptrs++; 2) ptrs+=4; 3) *(ptrs+2)=2;
Описание слайда:
5.2.3 Адресная арифметика + n  + n*sizeof() Пример: short a, *ptrs =&a; 1) ptrs++; 2) ptrs+=4; 3) *(ptrs+2)=2;

Слайд 11


Адресная арифметика (2) Особенности результатов выполнения операций адресной арифметики связано с реализацией языка С++. В С++ принят обратный...
Описание слайда:
Адресная арифметика (2) Особенности результатов выполнения операций адресной арифметики связано с реализацией языка С++. В С++ принят обратный порядок размещения объектов в памяти. Это объясняется особенностями работы компилятора. При разборе текста, компилятор распознает и размещает в стек имена всех объектов, которые необходимо разместить в памяти. На этапе распределения памяти имена объектов выбираются из стека и им отводятся смежные участки памяти. А так как порядок записи в стек обратен порядку чтения, размещение объектов оказывается обратным. Например: int i1=10,i2=20,i3=30;

Слайд 12


Адресная арифметика (3) // Ex5_1.cpp #include "stdafx.h" #include int main(int argc, char* argv[]) {int i1=10,i2=20,i3=30; int *p=&i2; //...
Описание слайда:
Адресная арифметика (3) // Ex5_1.cpp #include "stdafx.h" #include int main(int argc, char* argv[]) {int i1=10,i2=20,i3=30; int *p=&i2; // Value and Address // i1,i2,i3 cout

Слайд 13


Соотношение ссылки и указателя int a, *ptri=&a, - указатель &b=a; - ссылка … a=3;  *ptri=3;  b=3; Основное отличие – для обращения к содержимому по...
Описание слайда:
Соотношение ссылки и указателя int a, *ptri=&a, - указатель &b=a; - ссылка … a=3;  *ptri=3;  b=3; Основное отличие – для обращения к содержимому по указателю нужна операция разыменования, обращение к содержимому по ссылке осуществляется по имени ссылки!!!

Слайд 14


5.3 Управление динамической памятью (С) 1. Размещение одного значения Выделение памяти void * malloc(size_t size); - возвращает адрес начала области...
Описание слайда:
5.3 Управление динамической памятью (С) 1. Размещение одного значения Выделение памяти void * malloc(size_t size); - возвращает адрес начала области памяти; при присвоении указателю – явное преобразование типа. Освобождение памяти void free(void *block); Пример: int *a; if ((a = (int *) malloc(sizeof(int))) == NULL) { printf("Не хватает памяти для числа."); exit(1); } *a=-244; *a+=10; free(a);

Слайд 15


Управление динамической памятью (С) 2. Размещение нескольких значений Выделение памяти void * сalloc(size_t n, size_t size); Освобождение памяти void...
Описание слайда:
Управление динамической памятью (С) 2. Размещение нескольких значений Выделение памяти void * сalloc(size_t n, size_t size); Освобождение памяти void free(void *block); Пример: int *list; list = (int *) calloc(3,sizeof(int)); *list=-244; *(list+1)=15; *(list+2)=-45; … free(list);

Слайд 16


Управление динамической памятью (С++) 1. Одно значение Операция выделения памяти =new[()]; Операция освобождения памяти delete ; Примеры: а) int *k;...
Описание слайда:
Управление динамической памятью (С++) 1. Одно значение Операция выделения памяти =new[()]; Операция освобождения памяти delete ; Примеры: а) int *k; k = new int; *k = 85; б) int *a; if ((a = new int(-244)) == NULL) {printf("Не хватает памяти для числа."); exit(1); } delete a;

Слайд 17


Управление динамической памятью (С++) 2. Несколько значений Операция выделения памяти для n значений: =new[]; Операция освобождения памяти: delete [...
Описание слайда:
Управление динамической памятью (С++) 2. Несколько значений Операция выделения памяти для n значений: =new[]; Операция освобождения памяти: delete [ ] ; Пример: short *list; list = new int [3]; *list=-244; *(list+1)=15; *(list+2)=-45; delete[ ] list;

Слайд 18


5.4 Многомерные массивы и указатели. Объявление массива: int *a; | int a[10]; a=calloc(10,4); | a[2]=15; *(a+2)=15; Примеры: int list[10]; По...
Описание слайда:
5.4 Многомерные массивы и указатели. Объявление массива: int *a; | int a[10]; a=calloc(10,4); | a[2]=15; *(a+2)=15; Примеры: int list[10]; По правилам С++ имя массива является его адресом. Поэтому для адресации элементов массива независимо от способа описания можно использовать адресную арифметику: (list+i)  &(list[i]) *(list+i)  list[i]

Слайд 19


Многомерные массивы и указатели (2) int m[2][3][2]; m - *m => m[0][][] **m => m[0][0][] ***m => m[0][0][0] m[0][2][] m[0][2][0] => *(*(*(m+0)+2)+0)...
Описание слайда:
Многомерные массивы и указатели (2) int m[2][3][2]; m - *m => m[0][][] **m => m[0][0][] ***m => m[0][0][0] m[0][2][] m[0][2][0] => *(*(*(m+0)+2)+0) =>*(*(*m+2)) m[i][j][k] => *(*(*(m+i)+j)+k) =>*(*(*(i+m)+j)+k)

Слайд 20


Многоуровневые ссылки (Ex5_1a) int m[]={1,2,3,4}; int *mp[]={m+3,m+2,m+1,m};
Описание слайда:
Многоуровневые ссылки (Ex5_1a) int m[]={1,2,3,4}; int *mp[]={m+3,m+2,m+1,m};

Слайд 21


Использование указателей при обработки массивов Пример. Написать программу переформирования матрицы путем сортировки каждой ее строки по возрастанию...
Описание слайда:
Использование указателей при обработки массивов Пример. Написать программу переформирования матрицы путем сортировки каждой ее строки по возрастанию ее элементов. Создание динамиеской матрицы // Ex5_2.cpp #include "stdafx.h" #include #include int **mas,*ptr; int a,b,n,m,i,j,k; void main() { printf("\n input n= "); scanf("%d",&n); printf("\n input m= "); scanf("%d",&m); mas=new int * [n]; for(i=0;i

Слайд 22


Использование указателей при обработки массивов (2) Заполнение матрицы данными for(i=0;i
Описание слайда:
Использование указателей при обработки массивов (2) Заполнение матрицы данными for(i=0;i

Слайд 23


Использование указателей при обработки массивов(3) Сортировка строк матрицы for(i=0;i
Описание слайда:
Использование указателей при обработки массивов(3) Сортировка строк матрицы for(i=0;i



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