Назначение функций С, форма описания функций, прототип функции, вызов функции. Передача параметров в функцию.
Такое многократное использование имени называется перегрузкой имени функции или просто перегрузкой.
Унарная операция * называется косвенностью (или операцией разыменования), она выбирает значение объекта, на который настроен указатель.
Динамическая память. Определение, назначение. Функции распределения памяти: malloc, calloc, free либо new и delete. Malloc #include<stdlib.h> #include<alloc.h> void *malloc(size_t size); Функция обеспечивают выделение блока памяти, размером size байт. Функция возвращает указатель на первый байт выделенной памяти или нулевой указатель NULL, если для размещения блока недостаточно памяти. Содержимое блока остается неизменным. Если size=0, то функция возвращает NULL. char *realloc(char *ptr, unsigned size); Функция realloc изменяет размер ранее захваченного блока памяти. Аргумент ptr указывает на начало блока. Аргумент size задает новый размер блока в байтах. Содержимое блока не изменяется. Функция realloc возвращает char-указатель на перезахваченный блок памяти или значение NULL, если памяти недостаточно, чтобы расширить блок к заданному размеру. Блок может быть передвинут, если его размеры изменены, поэтому аргумент ptr для функции realloc не обязательно такой же, как и возвращаемое значение. При возврате NULL первоначальный блок освобождается. В памяти, на которую указывает возвращаемое значение, гарантировано выравнивание для хранения любого типа объекта. Чтобы получить указатель на тип, отличный от char, используется преобразователь типа возвращаемого значения.
void * calloc(size_t nitems, size_t size); Функция calloc() выделяет память, размер которой равен значению выражения nitems * size, т.е. память, достаточную для размещения массива, содержащего nitems объектов размером size. Блок обнуляется. Если вы хотите выделить блок, размер которого превышает 64К то нужно использовать функцию farcalloc. calloc возвращает указатель на первый байт выделенной памяти или NULL, если недостаточно памяти для выделения нового блока или nitems или size равны 0. void free(void *ptr); Функция free() возвращает в динамически распределяемую область памяти блок памяти, адресуемый указателем рtr, после чего эта память становится доступной для выделения в будущем. Указатель ptr должен указывать на первый байт выделенной ранее динамической памяти с помощью функций malloc, calloc или realloc. Использование недопустимого указателя при вызове может вызвать крах системы. При передаче нулевого указателя функция free() не выполняет никакого действия. Оператор new выделяет динамическую память и возвращает указатель соответствующего типа на эту область памяти: Data *p_var = new Data; Здесь p_var — это переменная указателя, которая будет принимать адрес выделенной памяти, а Data представляет собой тип данных, которые будут храниться в этой памяти. Если запрос на выделение памяти не удовлетворяется, возникает исключение bad_alloc. Инициализировать выделенную память можно, задав инициализатор ми использовав при этом следующую форму записи: Data *p_var = new Data (init); init — это значение, которое будет присвоено выделенной памяти. Чтобы выделить память для одномерного массива используйте следующую общую форму. Data *p_var = new Data [size]; size указывает длину массива. При выделении массивов инициализация производиться. Оператор delete освобождает память, на которую указывает аргумент. Эта память предварительно должна быть выделена с помощью оператора new: delete p_var; Чтобы освободить массив, который был выделен с помощью оператора new, можно использовать следующую форму записи: delete [] p_var
Воспользуйтесь поиском по сайту: ![]() ©2015 - 2025 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|