Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Екзаменаційні білети.docx
Скачиваний:
4
Добавлен:
18.09.2019
Размер:
117.04 Кб
Скачать

Билет №24

1. Динамическая память – это память, выделяемая программе для ее работы за вычетом сегмента данных, стека, в котором размещаются локальные переменные подпрограмм и собственно тела программы.

Для работы с динамической памятью используют указатели. С их помощью осуществляется доступ к участкам динамической памяти, которые называются динамическими переменными. Для хранения динамических переменных выделяется специальная область памяти, называемая "кучей".

Динамические переменные создаются с помощью специальных функций и операций. Они существуют либо до конца работы программы, либо до тех пор, пока не будет освобождена выделенная под них память с помощью специальных функций или операций. То есть время жизни динамических переменных – от точки создания до конца программы или до явного освобождения памяти.

В С++ используется два способа работы с динамической памятью:

использование операций new и delete ;

использование семейства функций mal1ос ( calloc ) (унаследовано из С).

2. Задача із використанням покажчиків на функції у програмних кодах

//Определение и использование указателей на функции

#include "stdafx.h"

#include <iostream>

using namespace std;

//Определение и использование указателей на функции

void f1(); //объявление (прототип)функции f1

void f2(); //объявление (прототип)функции f2

int _tmain(int argc, _TCHAR* argv[]) {

void (*ptr)(); //ptr - указатель на функцию

f2(); //явный вызов функции f2

ptr=f2;//указателю присваивается адрес функции f2

(*ptr)();

//вызов функции f2 по ее адресу с разыменованием указателя

ptr=f1;//указателю присваивается адрес функции f1

(*ptr)();

//вызов функции f1 по ее адресу с разыменованием указателя

ptr(); // вызов функции f1 без разыменованием указателя

system("pause");

return 0;

}//описание функции f1 и f2

void f1() {

setlocale(LC_ALL,"Russian");

cout << "Выполняется f1\n";

}

void f2() {

setlocale(LC_ALL,"Russian");

cout << "Выполняется f2\n";

  1. }

Билет №25

1.Динамический массив – это массив, размер которого заранее не фиксирован и может меняться во время исполнения программы. Для изменения размера динамического массива язык программирования С++, поддерживающий такие массивы, предоставляет специальные встроенные функции или операции. Динамические массивы дают возможность более гибкой работы с данными, так как позволяют не прогнозировать хранимые объемы данных, а регулировать размер массива в соответствии с реально необходимыми объемами.

Объявление одномерных динамических массивов

Под объявлением одномерного динамического массива понимают объявление указателя на переменную заданного типа для того, чтобы данную переменную можно было использовать как динамический массив.

Синтаксис:

Тип * ИмяМассива;

Выделение памяти под одномерный динамический массив

Для того чтобы выделить память под одномерный динамический массив в языке С++ существует 2 способа.

1) при помощи операции new, которая выделяет для размещения массива участок динамической памяти соответствующего размера и не позволяет инициализировать элементы массива.

Синтаксис:

ИмяМассива = new Тип [ВыражениеТипаКонстанты];

2) при помощи библиотечной функции malloc (calloc), которая служит для выделения динамической памяти.

Синтаксис:ИмяМассива = (Тип *) malloc(N*sizeof(Тип));

илиИмяМассива = (Тип *) calloc(N, sizeof(Тип));