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

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) int​ if(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);​

}