
- •Основные определения
- •Операции над массивами
- •Массивы и указатели
- •Варианты обращения к элементам массива
- •Примеры вывода элементов массива через указатель
- •Передача одномерного массива в функцию в качестве параметра
- •Способы передачи одномерного массива в качестве параметра
- •Массив указателей на функцию
- •Динамические одномерные массивы
- •Способы определения динамических одномерных массивов
- •Пример нахождения среднего значения элементов динамического массива
- •Перегрузка функций при работе с массивами
- •Шаблоны функций при работе с массивами
- •Поиск в массиве
- •Сортировка массивов
- •Сортировка обменом («пузырьковая» сортировка)
- •Сортировка одномерного массива по некоторому признаку
- •Сортировка вставкой
- •Сортировка выбором
- •Примеры
- •Нахождение номера первого вхождения числа y в массив Х
- •Поиск в массиве максимального элемента и его номера
- •Проверка элементов массива на некоторую закономерность
- •Построение элементов массива в соответствии с некоторой закономерностью.
- •Нахождение количества положительных элементов между максимальным и минимальным элементами целочисленного массива
- •Нахождение суммы элементов вещественного массива, расположенных правее последнего отрицательного элемента

{return a+b;}
Обратите внимание на использование в данной программе функции getche(). Она позволяет программе обрабатывать введенный символ, не дожидаясь нажатия клавиши <enter>. Использование в подобной ситуации функции getchar() требует нажатия клавиши <enter> для завершения ввода (после нажатия необходимого символа), и это приводит не совсем к корректной работе программы (повторному выводу текста «input char»).
Динамические одномерные массивы
Если количество элементов массива известно до выполнения программы, массив определяется как статический в операторе описания переменных. Если количество элементов массива достаточно большое, или же массив необходим в программе лишь на короткое время, или же размер его определяется только в процессе работы программы, то создается динамический массив.
Особенность динамического массива, как и простой динамической переменной, – это отсутствие имени и возможность обращения к элементам только через переменнуюуказатель, которой присвоен начальный адрес области памяти, выделяемой массиву в «куче».
Память под динамический массив выделяется с помощью операции new или функции malloc(). Обнуления динамической памяти при ее выделении не происходит. Освобождается память с помощью операции delete; (размер массива при этом не указывается) или функции free ();
int n=10;
int *ptra= new int[n]; delete [] ptra;
double *ptrb = (double *) malloc (n* sizeof (double)); //#include <stdlib.h> free (ptrb);
Способы определения динамических одномерных массивов
1. В сегменте данных задан указатель на int, который инициализируется адресом динамического одномерного массива, расположенного в куче.
сегмент данных |
|
|
куча |
||||||||||||||
int *par |
|
|
|
par[i] ==*(par+i) |
|||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#include <iomanip> |
|
|
void Vvod (int mas[], int kol_a); |
|
|
void Vyvod (int mas[], int kol_a); |
|
|
const int n = 5; |
|
|
int main () |
|
|
{ |
|
|
static int *par = new int [n]; |
|
|
Vvod (par,n); |
|
|
Vyvod (par,n); |
// освобождение памяти, занимаемой динамическим массивом |
|
delete [] par; |
||
_getch(); |
|
15 |
Программирование – лекция 12 (лекции Стрикелевой Л.В.) |