Книга: Одномерные массивы

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

¨ современные трансляторы языка Си не контролируют допустимость значений индексов, это должен делать программист;

¨ количество измерений массива не ограничено;

¨ в памяти элементы массива располагаются так, что при переходе от элемента к элементу наиболее быстро меняется самый правый индекс массива, т.е. матрица, например, располагается в памяти по строкам;

¨ имя массива является указателем – константой на первый элемент массива;

¨ операций над массивами в Си нет, поэтому пересылка элементов одного массива в другой может быть реализована только поэлементно с помощью цикла;

¨ над элементами массива допускаются те же операции что и над простыми переменными того же типа;

¨ ввод/вывод значений элементов массива можно производить только поэлементно;

¨ начальные значения элементам массива можно присвоить при объявлении массива.

Примеры объявления массивов:

int A [10]; //одномерный массив из 10 целочисленных величин

float X [20]; //одномерный массив из 20 вещественных величин

int a[5]={1, 2, 3, 4, 5}; //массив с инициализацией его элементов

int c[]={–1 , 2, 0, –4, 5, –3, –5, –6, 1}; // массив размерность которого 6определяется числом инициализирующих элементов

Обращения к элементам одномерного массива могут иметь вид: A[0], A[1], A[2],…A[9], A[2*3] .

В Си нет массивов с переменными границами. Но, если количество элементов массива известно до выполнения программы, можно определить его как константу с помощью директивы #define , а затем использовать ее в качестве границы массива, например,

#define n 10;

Main ( )

{ int a[n], b[n]; // Объявление 2–х одномерных массивов

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

1.2 Динамические массивы

Если до начала работы программы неизвестно, сколько в массиве элементов, в программе используют динамические массивы. Память под них выделяется с помощью оператора new во время выполнения программы. Адрес начала массива хранится в переменной, называемой указателем . Например.

int n=20;

int *a = new int[n];

Здесь описан указатель a на целую величину, которому присваивается адрес начала непрерывной области динамической памяти, выделенной с помощью оператора new . Выделяется столько памяти, сколько необходимо для хранения n величин типа int . Величина n может быть переменной.

Примечание: Обнуление памяти при ее выделении не происходит. Инициализировать динамический массив нельзя.

Обращение к элементу динамического массива осуществляется также, как и к элементам обычного массива. Например: a[0], a[1], …, a[9] .

Можно обратиться к элементу массива другим способом: *(a+9), *(a+i), т.к. в переменной – указателе a хранится адрес начала массива. Для получения адреса, например, 9 – го его элемента к этому адресу прибавляется 9·sizeof(int) (9 умножить на·длину элемента типа int ), т.е. к начальному адресу a прибавляется смещение 9. Затем с помощью операции * (разадресации) выполняется выборка значения из указанной области памяти.

После использования массива выделенная динамическая память освобождается с помощью опереатора: delete [ ] имя массива . Так например, для одномерного массива a:

К-во Просмотров: 1168
Бесплатно скачать Книга: Одномерные массивы