Что такое findslide.org?

FindSlide.org - это сайт презентаций, докладов, шаблонов в формате PowerPoint.


Для правообладателей

Обратная связь

Email: Нажмите что бы посмотреть 

Яндекс.Метрика

Презентация на тему Динамические данные

Содержание

Виды памяти Существует три вида памяти: статическая, стековая и динамическая.Статическая память выделяется еще до начала работы программы, на стадии компиляции и сборки.
Динамические данные Виды памяти Существует три вида памяти: статическая, стековая и динамическая.Статическая память выделяется Статическая памятьСуществуют два типа статических переменных:Глобальные переменные (определенные вне функций): … int Локальные переменныеЛокальные (или стековые) переменные – это переменные определенные внутри функции (или Динамическая памятьНедостаток статической или локальной памяти: количество выделяемой памяти вычисляется на этапе Выделение и освобождение памятиНеобходимая библиотека: #include Выделение памяти: void* malloc(size_t n); void* Динамические массивыПример. Ввести с клавиатуры n чисел (n задается пользователем) и вывести Динамические массивыПравильный способ решения задачи (с использованием динамической переменной массива):void main() { Динамические структурыВыделение памяти под структуру: struct * =   (struct *) Массивы динамически создаваемых структурПример. Формирование массива из динамически создаваемых структур. void main() Динамические массивы структурПример. Формирование динамического массива из структур. void main() { Динамическая память, функции и двумерные массивы#include #include #define N 4#define L 5int void Func(int E[N][L],int p,int m){  int i,j,t,r,c=E[0][0];  for(i=0;i
Слайды презентации

Слайд 2 Виды памяти
Существует три вида памяти: статическая, стековая

Виды памяти Существует три вида памяти: статическая, стековая и динамическая.Статическая память

и динамическая.

Статическая память выделяется еще до начала работы программы,

на стадии компиляции и сборки.


Слайд 3 Статическая память
Существуют два типа статических переменных:
Глобальные переменные (определенные

Статическая памятьСуществуют два типа статических переменных:Глобальные переменные (определенные вне функций): …

вне функций):

int max_num = 100;

void

main() {

}
Статические переменные (определенные со словом static):
void main() {

static int max = 100;

}

Слайд 4 Локальные переменные
Локальные (или стековые) переменные – это переменные

Локальные переменныеЛокальные (или стековые) переменные – это переменные определенные внутри функции

определенные внутри функции (или блока):
void my_func() {


int n = 0;

if (n != 0) {
int a[] = {0, 2, 4, 5};

}

}
Память выделяется в момент входа в функцию или блок и освобождается в момент выхода из функции или блока.

Слайд 5 Динамическая память
Недостаток статической или локальной памяти: количество выделяемой

Динамическая памятьНедостаток статической или локальной памяти: количество выделяемой памяти вычисляется на

памяти вычисляется на этапе компиляции и сборки.

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

позволяет избавиться от данного ограничения.

Слайд 6 Выделение и освобождение памяти
Необходимая библиотека:
#include

Выделение памяти:

Выделение и освобождение памятиНеобходимая библиотека: #include Выделение памяти: void* malloc(size_t n);

void* malloc(size_t n);
void* calloc(size_t num, size_t size);
void*

realloc(void *ptr, size_t size);
C++:
<тип> <имя> = new <тип>;

Освобождение памяти:
void free(void *p);
C++:
delete <имя>;


Слайд 7 Динамические массивы
Пример. Ввести с клавиатуры n чисел (n

Динамические массивыПример. Ввести с клавиатуры n чисел (n задается пользователем) и

задается пользователем) и вывести их в обратном порядке.
Неправильный способ

решения задачи (с использованием локальной переменной массива) :
void main() {
int n,i;
scanf(“%d”, &n); /* вводим кол-во чисел */
int a[n];
/* ошибка. Нельзя создавать массив используя переменную-размер */
for (i = 0; i < n; i++)
scanf(“%d”, &a[i]);
for (i = n-1; i >=0; i--)
printf(“%5d”, a[i]);
}

Слайд 8 Динамические массивы
Правильный способ решения задачи (с использованием динамической

Динамические массивыПравильный способ решения задачи (с использованием динамической переменной массива):void main()

переменной массива):
void main() {
int n,i;
scanf(“%d”, &n); /*

вводим кол-во чисел */

/* выделяем память под массив */
int *a = (int*)malloc(n * sizeof(int));

for (i = 0; i < n; i++)
scanf(“%d”, &a[i]);
for (i = n-1; n >=0; i--)
printf(“%5d”, a[i]);

free(a); /* освобождаем память */
}


Слайд 9 Динамические структуры
Выделение памяти под структуру:
struct *

Динамические структурыВыделение памяти под структуру: struct * =  (struct *)

переменной> =
(struct *) malloc(sizeof());

Освобождение памяти:
free(

переменной>);

Опишем структуру:
struct student {
char name[50];
int grade;
int group;
};


Слайд 10 Массивы динамически создаваемых структур
Пример. Формирование массива из динамически

Массивы динамически создаваемых структурПример. Формирование массива из динамически создаваемых структур. void

создаваемых структур.
void main() {
/* Объявляем

массив студентов */
struct student* students[100] = {NULL};
int i,n;
scanf(“%d”, &n); /* n - количество студентов */

for (i = 0; i < n; i++) {
/* резервируем память */
students[i] = (struct student*)malloc( sizeof(students));
scanf(“%50s %d %d”, &students[i]->name, &students[i]->age, &students[i]->grade);
}

}

Слайд 11 Динамические массивы структур
Пример. Формирование динамического массива из структур.

Динамические массивы структурПример. Формирование динамического массива из структур. void main() {

void main() {
/* Объявляем массив студентов

*/
struct student* a;
int i,n;
scanf(“%d”, &n); /* n - количество студентов */
/* резервируем память */
a = (struct student* a) malloc( n * sizeof(struct student));

for (i = 0; i < n; i++) {
scanf(“%50s %d %d”, &a[i].name, &a[i].age, &a [i].grade);
}

}

Слайд 12 Динамическая память, функции и двумерные массивы
#include
#include
#define

Динамическая память, функции и двумерные массивы#include #include #define N 4#define L

N 4
#define L 5

int **AllocateM(int Width, int Height)
{

int **m=(int**)malloc(Height*sizeof(int*));//ðàçìåðíîñòü óêàçàòåëÿ
int i;
for(i=0;i {
m[i]=(int*)malloc(Width*sizeof(int));
}
return m;
}


  • Имя файла: dinamicheskie-dannye.pptx
  • Количество просмотров: 94
  • Количество скачиваний: 0
- Предыдущая Фразеологизмы