Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Шпора программирование (2 модуль).docx
Скачиваний:
3
Добавлен:
01.04.2025
Размер:
41.46 Кб
Скачать

11.Варианты описания и использования функций. Аргументом функции является двухмерный массив (матрица).

Существует 3 способа передачи:

  1. Массив с фиксированным количеством строк и столбцов

void func(float c[5][10])

В теле функции к элементам матрицы обращаются привычным образом a[i][j]

При вызове функции передаётся имя массива.

  1. Массив передаётся с неопределённым количеством строк и фиксированным количеством столбцов.

В этом случае нужно обязательно передавать еще один параметр – количество строк.

Внутри функции к элементам матрицы обращаются обычным образом a[i][j]

При вызове передаётся имя массива.

  1. Массив передаётся как указатель на начало массива.

В этом случае нужно передавать количество строк и стобцов.

void func(float *ptc, int m, int n)

К элементам матрицы обращаться по формуле *(ptc+i*n+j)

При вызове передаётся адрес первого элемента массива.

Способ позволяет обрабатывать матрицы произвольного размера.

12.Варианты описания и использования функций. Аргументом функции является другая функция.

Void f1(тип (*агтс)(тип1б тип2б…)б…)

{ func(x,g,z…); }

При вызове функции в качестве аргумента записывается имя конкретной функции: f1(f2,…);

13.Динамическая память «куча». Функции выделения и освобождения памяти.

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

Выделенный участок памяти становится недоступным при последующих выделениях.

В случае, если динамическая переменная уже не нужна, то необходимо освободить занимаемый ею блок памяти. Некорректное освобождение памяти приводит к «утечкам».

Язык Си предлагает следующие функции для распределения памяти.

Void *malloc (size_t size);

Данная функция имеет один аргумент, который указывает количество байт выделяемого участка(блока) памяти.

Функция возвращает указатель на начало выделенного блока (первый байт).

Void *calloc (size_t num, size_t size);

Имеет два параметра Num и Size.

Выделяется блок памяти размера Num*Size байт.

Void *realloc(void *block, size_t size);

Позволяет изменить размер уже выделенного блока памяти.

Первый аргумент void *block – это указатель на начало блока памяти, который уже выделен.

Size – новый размер блока в байтах.

Если в куче отсутствует блок заданного размера, то функции возвращают NULL.

Void *free(void *block);

Используется для освобождения блока памяти, на который указывает указатель *block .

Количество функций *malloc и *calloc в сумме должно быть равно количеству функций *free.

В язык С++ добавлено два оператора: new (выделение памяти) и delete (освобождение памяти).

New имеет два параметра: new тип и new тип [N]

Delete имеет два параметра: delete указатель и delete[] указатель

14.Символьные строки. Определение, отличие от последовательности символов.

Для описания символьных строк в Си не существует специального типа.

Поскольку строка – это последовательность символов, то она описывается как массив элементов типа char.

При этом последний элемент массива должен хранить нуль-символ ‘\0’. Только тогда массив символов станет строкой.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]