Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
шпоры по программ(мои).doc
Скачиваний:
10
Добавлен:
01.03.2025
Размер:
969.73 Кб
Скачать

3.Операторы new и delete.

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

Если оператор new может выделить требуемый объем памяти, он возвращает указатель на начало области выделенной памяти. Если не может - возвращает указатель NULL.

Чтобы позже освободить память, распределенную с помощью оператора new, используeтся оператор delete.

Пример запроса памяти для 50 байтного массива:

char *buffer = new char[50];

Для освобождения памяти с использованием оператора delete этому оператору указывается указатель на данную область памяти.

Пример:

int *p_var = NULL; // объявление нового указателя

p_var = new int; // память динамически выделяется

/* .......

остальной код

........*/

delete p_var; // память освобождается

Билет 25

1.Связь между массивами и указателями

В языке Си массивы и указатели тесно связаны. Имя каждого массива может рассматриваться как указатель на первый элемент массива. Элемент массива a[i] есть элемент массива, на который указывает *(a+i).

array[0] = 2;

*(array+0) = 2;

*array = 2;

присваивает начальному элементу массива значение 2.

Различие: указатель - это переменная, поэтому можно написать , а имя массива не является переменной.

2.Файлы данных: структура данных в файле.

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

#include stdio.h>

void main()

{

 FILE *fp; /* FILE - имя файлового типа; fp - указатель на файл*/

 fp = fopen("E:MYFILE.txt", "a"); /*открытие, буква а значит для добавления

 fprintf(fp, "%s\n ", "Hello World");

 fclose(fp) ;

}

fprintf, fscanf, fgets, fputs.

3. Примеры абстрактных структур: очереди

Очередью называется упорядоченный набор элементов, которые могут

удаляться с одного ее конца и помещаться в другой конец.

Очередь в отличие от стека организуется по принципу FIFO – First Input

– First Output (Первым пришел – Первым ушел).

Функция создания очереди.

void sozdan( struct Ochered *q )

{ q->con = 0; уст-ка указателей на начальн.значения(нач и конечн)

q->nach = 0;

}

((((Добавления элемента в очередь.

(((int dobavel( struct Ochered *q, int new_el )

{ if (! QueIsFull( q )) {

q -> data[q -> tail] = new_el;

q -> tail = QueNewIndex(q -> tail);

return TRUE;

}

else

return FALSE;})))

Получение из очереди, Пуста ли очредь?

pust( struct ochered *q )

{ if (ochLength(q) == 0)

return TRUE;

else

return FALSE; }

Билет 26

1.Обращение к элементам массива

Доступ к отдельным элементам массива может выполняться либо с помощью индекса, либо операцией *. В первом случае для ссылки на нужный элемент указывается его порядковый номер в массиве, заключенный в квадратные скобки. Самый первый элемент массива имеет порядковый номер 0.

Пример:

int mas[10];

mas[4]=6;

a=mas[4];

Использование указателей. Так как имя массива – это указатель-константа на первый байт первого элемента массива, то, используя операцию *, можно выполнить доступ к любому из элементов массива. Будут эквивалентны ссылки на i-й элемент массива mas mas[i] и *(mas + i).

Пример:

int mas[10];

*(mas+4)=6;

a=*(mas +4);