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

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


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

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

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

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

Презентация на тему Алгоритмические языки и программирование

Часть 1
Лекция 7Алгоритмические языки и программирование Часть 1 Динамическое выделение памяти Что это значит?Это значит то, что при динамическом выделении Динамическое выделение памяти  Очень часто возникают задачи обработки массивов данных, размерность Динамическое выделение памятиДля динамического выделение памяти необходимо подключить следующие библиотеки: stdlib.h malloc.hДля Функция malloc()void * malloc( size_t sizemem );Функция malloc выделяет блок памяти,размером sizemem байт, и возвращает указатель наначало блока.Возвращаемое Функция realloc()void * realloc( void * ptrmem, size_t size);Функция realloc выполняет перераспределение блоков Функция calloc()void * calloc(size_t number, size_t size);Функция calloc выделяет блок памяти для массива Функция free()void free(void * ptrmem);Функция free освобождает место в памяти. Блок памяти, ранее Пример malloc()#include #include #include #include int main() { int *a; // указатель Пример realloc() Пример calloc()#include #include #include #include int main() { int *a; // указатель Лабораторные работы Динамическое выделение памятиНапишите программу, которая создает строку длиной указанный пользователем и заполняет
Слайды презентации

Слайд 2 Часть 1

Часть 1

Слайд 3 Динамическое выделение памяти Что это значит?
Это значит то, что

Динамическое выделение памяти Что это значит?Это значит то, что при динамическом

при динамическом выделении памяти, память резервируется не на этапе

компиляции, а на этапе выполнения программы. И это дает нам возможность выделять память более эффективно, в основном это касается массивов. С динамическим выделением память, нам нет необходимости заранее задавать размер массива, тем более, что не всегда известно, какой размер должен быть у массива. 

Слайд 4 Динамическое выделение памяти
Очень часто возникают задачи

Динамическое выделение памяти Очень часто возникают задачи обработки массивов данных, размерность

обработки массивов данных, размерность которых заранее неизвестна. В этом

случае возможно использование одного из двух подходов:
выделение памяти под статический массив, содержащий максимально возможное число элементов, однако в этом случае память расходуется не рационально;
динамическое выделение памяти для хранение массива данных.


Слайд 5 Динамическое выделение памяти
Для динамического выделение памяти необходимо подключить

Динамическое выделение памятиДля динамического выделение памяти необходимо подключить следующие библиотеки: stdlib.h

следующие библиотеки:
stdlib.h
malloc.h
Для динамического выделения памяти используются функции:

malloc
calloc
realloc
Далее мы рассмотрим каждую функцию
подробнее.

Слайд 6 Функция malloc()
void * malloc( size_t sizemem );

Функция malloc выделяет блок памяти,
размером sizemem байт, и

Функция malloc()void * malloc( size_t sizemem );Функция malloc выделяет блок памяти,размером sizemem байт, и возвращает указатель наначало

возвращает указатель на
начало блока.

Возвращаемое значение:
Указатель на выделенный блок памяти. Тип

данных на
который ссылается указатель всегда void*, поэтому это тип
данных может быть приведен к желаемому типу данных.
Если функции не удалось выделить требуемый блок
памяти, возвращается нулевой указатель.


Слайд 7 Функция realloc()
void * realloc( void * ptrmem, size_t size);

Функция

Функция realloc()void * realloc( void * ptrmem, size_t size);Функция realloc выполняет перераспределение

realloc выполняет перераспределение блоков памяти.
Размер блока памяти, на который

ссылается параметр ptrmem изменяется на size байтов. Блок памяти может уменьшаться или увеличиваться в размере.

Возвращаемое значение:
Указатель на перераспределенный блок памяти, который может быть либо таким же, как аргумент ptrmem или ссылаться на новое место. Тип данных возвращаемого значения всегда void*, который может быть приведен к любому другому. Если функции не удалось выделить требуемый блок памяти, возвращается нулевой указатель, и блок памяти, на который указывает аргумент ptrmem остается неизменным.


Слайд 8 Функция calloc()
void * calloc(size_t number, size_t size);

Функция calloc выделяет

Функция calloc()void * calloc(size_t number, size_t size);Функция calloc выделяет блок памяти для

блок памяти для массива размером — num элементов, каждый

из которых занимает size байт, и инициализирует все свои биты в нулями.
В результате выделяется блок памяти размером number * size байт, причём весь блок заполнен нулями.

Возвращаемое значение:
Указатель на выделенный блок памяти. Тип данных на который ссылается указатель всегда void*, поэтому это тип данных может быть приведен к желаемому типом данных.
Если функции не удалось выделить требуемый блок памяти, возвращается нулевой указатель.

Слайд 9 Функция free()
void free(void * ptrmem);
Функция free освобождает место в

Функция free()void free(void * ptrmem);Функция free освобождает место в памяти. Блок памяти,

памяти. Блок памяти, ранее выделенный с помощью вызова malloc,

calloc или realloc освобождается. То есть освобожденная память может дальше использоваться программами или ОС.
Обратите внимание, что эта функция оставляет значение ptrmem неизменным, следовательно, он по-прежнему указывает на тот же блок памяти, а не на нулевой указатель.

Возвращаемое значение:
Функция не имеет возвращаемое значение

Слайд 10 Пример malloc()
#include
#include
#include
#include
int main() {

Пример malloc()#include #include #include #include int main() { int *a; //

int *a; // указатель на массив
int i, n;

setlocale(LC_ALL,"rus");
printf("Введите размер массива: ");
scanf("%d", &n);
a = (int*)malloc(n * sizeof(int)); // Выделение памяти
for (i = 0; i printf("a[%d] = ", i);
scanf("%d", &a[i]);
}
for (i = 0; i printf("%d ", a[i]);
free(a);
return 0;
}

Слайд 11 Пример realloc()

Пример realloc()

Слайд 12 Пример calloc()
#include
#include
#include
#include
int main() {

Пример calloc()#include #include #include #include int main() { int *a; //

int *a; // указатель на массив
int i, n;

setlocale(LC_ALL,"rus");
printf("Введите размер массива: ");
scanf("%d", &n);
a = (int*)calloc(n, sizeof(int)); // Выделение памяти
for (i = 0; i printf("a[%d] = ", i);
scanf("%d", &a[i]);
}
for (i = 0; i printf("%d ", a[i]);
free(a);
return 0;
}

Слайд 13 Лабораторные работы

Лабораторные работы

  • Имя файла: algoritmicheskie-yazyki-i-programmirovanie.pptx
  • Количество просмотров: 119
  • Количество скачиваний: 1