Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
44
Добавлен:
16.02.2016
Размер:
1.2 Mб
Скачать

Карасев Н.И.

Методология объектно-ориентированного программирования

Обзорные лекции по курсу

Лекция 4. Статические и динамические массивы. Указатели и адреса объектов.

Массивы символов

Определение размера массива посредством константной переменной вместо литеральной константы делает программу более понятной и масштабируемой.

При выполнении цикла в массиве индекс массива никогда не должен быть ниже 0 и всегда должен быть меньше, чем общее число элементов в массиве(на единицу меньше чем размер массива ).Условие выхода из цикла должно гарантировать доступ к элементам вне этого диапазона.

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

Содержание лекции:

1.Массивы и указатели

2.Многомерные массивы

3.Динамическое выделение массивов

4 Массивы символов

5.Резюме

6. Упражнения для самопроверки

Язык C++, как и многие другие языки высокого уровня, предоставляет программисту возможность работы с наборами однотипных данных, которые именуют массивами. Отдельная единица таких данных, входящих в массив, называется элементом массива. В качестве элементов массива могут выступать данные любого типа (один тип данных для каждого массива). Так как массивы являются структурами хранения данных в оперативной памяти, то более формальное определение массива будет иметь такой вид: Массив- это последовательная группа ячеек памяти, имеющих одинаковое имя и одинаковый тип.

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

Мерность массива определяется числом индексных выражений, необходимых для ссылки к ячейке отдельного элемента массива в последовательности ячеек памяти, выделенных под массив. В связи с этим элементы массивов часто называют индексированными переменными и обозначают соответственно: а[1], b[i+j] – одномерные массивы,

с[3] [4],d[j][i] – двумерные массивы, f[1][3]….[n], s[k] [d+3]….[n] – n –мерные массивы.

Использованию массива в выражениях предшествует его объявление, резервирующее под массив определенное количество памяти. При этом указывается тип элементов массива, имя массива и его размер. Размер сообщает компилятору, какое количество элементов будет размещено в массиве.Например: описаниеint fl[20]; зарезервирует в памяти место для размещения 20 целочисленных элементов массиваfl, а объявление

float m[100], n[20][30];

зарезервирует память для 100 элементов массива вещественных чисел mи 600 элементов массива вещественных чиселn.

Элементы массива в памяти располагаются непосредственно один за другим. На рис. 4.1 показано размещение элементов одномерного массива из двухбайтных элементов (типа short) в памяти.

Обращение к элементам массива может осуществляться одним из двух способов:

по номеру элемента в массиве или через его индекс;

по указателю.

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

x = Array[13];

y = Array[19];

выполнит присвоение переменной x значения 14-го элемента, а переменной у - значение 20-го элемента массива.

Рис. 4.1. Размещение элементов одномерного массива в памяти

При обращении к элементам массивов через индексы их можно представлять: целочисленными константами,например, а[1], переменными, например, d[j,i] или выражениями, например, b[i+j]. В С++ нумерация ячеек памяти, выделяемых под массив, начинается с нуля. Таким образом, первый элемент массива b указывают как b[0],второй элемент, как b[1], седьмой - как b[6], а i-ый элемент массива указывают как b[i-1].

Доступ к элементам массива через указатели и сам механизм указателей и ссылок рассмотрим ниже, а сейчас рассмотрим механизм инициализации элементов массивов.

Инициализация массивов

Инициализацию массивов, содержащих элементы базовых типов, можно производить при их объявлении. При этом непосредственно после объявления необходимо за знаком равенства (=) перечислить значения элементов в фигурных скобках через запятую (,) по порядку их следования в массиве. Например, выражение;

int Temp[12] = {2, 4, 7, 11, 12, 12, 13, 12, 10, 8, 5, 1};

проинициализирует массив температур Temp соответствующими значениями. Так, элемент Теmр[0] получит значение 2, элемент Temp [ 1 ] - значение 4 и т.д. до элемента Temp [ 11 ] с присвоением ему значения 1.

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

Соседние файлы в папке ЛекцииКарасева