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

На нашем сайте вы можете скачать и просмотреть онлайн доклад-презентацию на тему Использование динамической памяти Адресация оперативной памяти абсолютно бесплатно. Урок-презентация на эту тему содержит всего 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.

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

№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.Арифметические операции. В С++ над указателями разрешены операции: - сложение и вычитание (аддитивные операции) инкремент или автоувеличение (++) декремент или автоуменьшение (--) В силу особенностей выполнения арифметических операций над указателями, совокупность этих операций получила название Адресной арифметики

№10 слайд
. . Адресная арифметика lt
Содержание слайда: 5.2.3 Адресная арифметика <Указатель> + n  <Адрес> + n*sizeof(<Тип данных>) Пример: short a, *ptrs =&a; 1) ptrs++; 2) ptrs+=4; 3) *(ptrs+2)=2;

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

№12 слайд
Адресная арифметика Ex .cpp
Содержание слайда: Адресная арифметика (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;

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

№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]

№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) =>*(*(*m+2)) m[i][j][k] => *(*(*(m+i)+j)+k) =>*(*(*(i+m)+j)+k)

№20 слайд
Многоуровневые ссылки Ex a
Содержание слайда: Многоуровневые ссылки (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 <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 презентации Использование динамической памяти Адресация оперативной памяти одним архивом:
Похожие презентации