Добавил:
north memphis Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование Экзамен Теория и Практика.pdf
Скачиваний:
2
Добавлен:
29.01.2025
Размер:
335.78 Кб
Скачать

return 0;}

...free(a);

malloc - не инициализирует

calloc - функция для выделения ОЗУ, после выделения ОЗУ инициализирует выделенную память нулями.

void* calloc(size_t n, size_t element size)

1-й аргумент - количество элементов

2-й аргумент - размер элемента

realloc - автоматически освобождает ОЗУ. Она позволяет изменить размер ранее выделенной памяти и получает в качестве аргументов старый указатель и новый размер памяти в байтах.

free - ничего не возвращает, имеет тип void

free(NULL) - безопасная функция, ничего не произойдёт.

Выделение памяти в C++

stdlib - заголовочный файл

malloc и free также присутствуют в C++.

Оператор new тоже выделяет ОЗУ,а также используется для создания новых объектов.

int* a = new int;int* b = new int[10];

delete a - очистка памяти для переменных​ delete [] b - очистка памяти для массивов

a=new(std::nothrow) intif(a==nullptr)

{

std:: cout<<"Error!";

return 1;

}

Адресная арифметика

Если прибавить к указателю константу, то значение указателя изменится на:

константа*размер указателя

Можно:

1)​ Вычитать указатель из указателя

2)​ Прибавить константу к указателю 3)​ Вычесть константу из указателя

4)​ Инкрементировать и декрементировать указатель

Структуры

Структура - конструкция языков программирования C и C++, представляющая собой совокупность переменных (полей) с возможностью доступа к каждому полю. Описание структуры не занимает ОЗУ.

struct Student

{

char Name[100];

int Group;

}

Полем структуры не может быть эта же структура.

Описание структуры:

1)​ Локальное 2)​ Глобальное

struct Student a;scanf("%[^\n]s", a.Name);

scanf("%zu", &a.Year);

struct Student Group2364[25];

for(i=0;i<sizeof(Group2364)/sizeof(Group2364[0]);i++){

scanf("%[^\n]s", Group2364[i].Name);

scanf("%zu", &Group2364[i].Year);

}