Презентация Использование динамической памяти Адресация оперативной памяти онлайн
На нашем сайте вы можете скачать и просмотреть онлайн доклад-презентацию на тему Использование динамической памяти Адресация оперативной памяти абсолютно бесплатно. Урок-презентация на эту тему содержит всего 23 слайда. Все материалы созданы в программе PowerPoint и имеют формат ppt или же pptx. Материалы и темы для презентаций взяты из открытых источников и загружены их авторами, за качество и достоверность информации в них администрация сайта не отвечает, все права принадлежат их создателям. Если вы нашли то, что искали, отблагодарите авторов - поделитесь ссылкой в социальных сетях, а наш сайт добавьте в закладки.
Презентации » Образование » Использование динамической памяти Адресация оперативной памяти
Оцените!
Оцените презентацию от 1 до 5 баллов!
- Тип файла:ppt / pptx (powerpoint)
- Всего слайдов:23 слайда
- Для класса:1,2,3,4,5,6,7,8,9,10,11
- Размер файла:387.50 kB
- Просмотров:64
- Скачиваний:1
- Автор:неизвестен
Слайды и текст к этой презентации:
№1 слайд
Содержание слайда: Глава 5. Использование динамической памяти
5.1 Адресация оперативной памяти.
Минимальная адресуемая единица памяти – байт.
Физический адрес Аф – номер байта оперативной памяти.
Адресация по схеме «база+смещение»:
Аф = Аб + Асм,
где Аб – адрес базы – адрес, относительно которого считают
остальные адреса;
Асм – смещение – расстояние от базового адреса до физического.
Указатель – тип данных, используемый для хранения смещений.
В памяти занимает 4 байта, адресует сегмент размером V = 232 = 4 Гб.
Базовый адрес = адрес сегмента.
№2 слайд
Содержание слайда: 5.2 Указатели и операции над ними
[<И1>][<Тип данных>][<Тип>] [И2]*<Имя>[=<Значение>];
Где :
<И1> - признак изменчивости содержимого по адресу указателя. Задается ключевым словом const. При этом значение содержимого памяти, которую адресует указатель, нельзя менять. Может отсутствовать.
<И2> - признак изменчивости указателя. Задается ключевым словом const. При этом значение самого указателя нельзя менять.
Может отсутствовать.
<Тип данных> - тип данных, адресуемых указателем. Любой тип, определенный в С++, в том числе void.
<Тип > - тип указателя. Определяется моделью памяти. Может быть far или near. Если тип указателя не указан, принимается near.
№4 слайд
Содержание слайда: 5.2.1 Типизированные и нетипизированные указатели
Различают указатели:
типизированные – адресующие данные конкретного типа;
нетипизированные – не связанные с данными определенного типа.
Объявление типизированного указателя:
int *b,*c ;
float *s ,double *f;
long double *l;
Объявление нетипизированного указателя:
void * <имя>;
Этот указатель создан как бы «на все случаи жизни».
Он отличается от других отсутствием сведений о размере соответствующего участка памяти. Поэтому его легко связывать с указателями других типов.
№5 слайд
Содержание слайда: Нулевой указатель
В С++ определена адресная константа NULL;
Эта константа определяет адрес, который никуда не указывает или «нулевой указатель».
Его можно присвоить указателю любого типа.
Например:
int *pi=NULL;
float *pf=NULL;
void *b=NULL;
Кроме того, эту константу можно использовать в операциях сравнения при проверке логических адресных выражениях.
while (pi!=NULL) do { …};
№6 слайд
Содержание слайда: 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. Получение адреса (&).
Результат операции – адрес некоторой области памяти, который можно присвоить указателю.
Это можно сделать:
a) При помощи операции присваивания:
int *pi,i=10;
... pi=&i;
b) Во время инициализации указателя при его определении:
float b=5.7;
float *pf=&b;
№8 слайд
Содержание слайда: Операции над указателями (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) {….}
5.Арифметические операции.
В С++ над указателями разрешены операции:
- сложение и вычитание (аддитивные операции)
инкремент или автоувеличение (++)
декремент или автоуменьшение (--)
В силу особенностей выполнения арифметических операций над указателями, совокупность этих операций получила название Адресной арифметики
№11 слайд
Содержание слайда: Адресная арифметика (2)
Особенности результатов выполнения операций адресной арифметики связано с реализацией языка С++.
В С++ принят обратный порядок размещения объектов в памяти.
Это объясняется особенностями работы компилятора. При разборе текста, компилятор распознает и размещает в стек имена всех объектов, которые необходимо разместить в памяти.
На этапе распределения памяти имена объектов выбираются из стека и им отводятся смежные участки памяти. А так как порядок записи в стек обратен порядку чтения, размещение объектов оказывается обратным.
Например:
int i1=10,i2=20,i3=30;
№12 слайд
Содержание слайда: Адресная арифметика (3)
// Ex5_1.cpp
#include "stdafx.h"
#include <iostream.h>
int main(int argc, char* argv[])
{int i1=10,i2=20,i3=30;
int *p=&i2;
// Value and Address
// i1,i2,i3
cout <<"\n &i1="<<&i1;
cout<<“ *&i1= " << *&i1;
cout <<"\n &i2="<<&i2;
cout << " *&i2= " << *&i2;
cout <<"\n &i3="<<&i3;
cout << " *&i3= " << *&i3;
// value i2 added 1 (+ 1)
cout <<"\n *&i2="<<*&i2<<endl;
cout<<"*&++i2"<<*&++i2<<endl;
№14 слайд
Содержание слайда: 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 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;
k = new int;
*k = 85;
б) int *a;
if ((a = new int(-244)) == NULL)
{printf("Не хватает памяти для числа.");
exit(1); }
delete a;
№17 слайд
Содержание слайда: Управление динамической памятью (С++)
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];
По правилам С++ имя массива является его адресом.
Поэтому для адресации элементов массива независимо от способа описания можно использовать адресную арифметику:
(list+i) &(list[i])
*(list+i) list[i]
№21 слайд
Содержание слайда: Использование указателей при обработки массивов
Пример. Написать программу переформирования матрицы путем сортировки каждой ее строки по возрастанию ее элементов.
Создание динамиеской матрицы
// Ex5_2.cpp
#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
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<n;i++)
mas[i]=new int [m];
№22 слайд
Содержание слайда: Использование указателей при обработки массивов (2)
Заполнение матрицы данными
for(i=0;i<n;i++)
{ printf(" input %d elem. %d string\n",m,i);
ptr=mas[i];
for (j=0;j<m;j++)
scanf("%d",mas[i]++);
mas[i]=ptr; }
Печать сформированной матрицы
puts("Inputed matrix");
for(i=0;i<n;i++)
{ ptr=mas[i];
for (j=0;j<m;j++)
printf("%3d",*ptr++);
printf("\n");
}
№23 слайд
Содержание слайда: Использование указателей при обработки массивов(3)
Сортировка строк матрицы
for(i=0;i<n;i++)
for(k=0;k<m-1;ptr=mas[i],k++)
for(j=0;j<m-1;ptr++,j++)
if(*ptr>*(ptr+1))
{b=*ptr;*ptr=*(ptr+1);*(ptr+1)=b;}
Печать переформированной матрицы
puts("Sorted matrix");
for(i=0;i<n;i++)
{ ptr=mas[i];
for (j=0;j<m;j++)
printf("%3d",*ptr++);
printf("\n");
}
for(i=0;i<n;i++)
delete [] mas[i];
delete [] mas;
}
Скачать все slide презентации Использование динамической памяти Адресация оперативной памяти одним архивом:
-
История развития оперативной памяти ЭВМ
-
Структуры, препроцессор, динамическая память
-
Использование материалов инвентаризации в оперативно-следственной практике
-
Адресация в сетях TCP/IP Использование масок при IP-адресации. Порядок назначения IP-адресов и технология CIDR. Протокол ARP. Доменные имен
-
Динамическое моделирование с использованием сетей Петри
-
Указатели и динамическое распределение памяти
-
Использование ИКТ в библиотеках образовательных учреждений В. Б. Антипова, ПОИПКРО. - презентация
-
Использование концепции WEB 2. 0 в маркетинговом и рекламном менеджменте передовых западных компаний. - презентация
-
Использование концепции WEB 2. 0 в маркетинговом и рекламном менеджменте передовых западных компаний Якко Столкер – директор Европе
-
ЭМОЦИЯ в дизайне и рекламе Юлия Шихат-Саркисова ПАМЯТКА. - презентация