Пример 4.2 - Выделение памяти под массив

Пример 4.1 - Создание (определение) массивов

float fA[4]={0.1f, 0.2f, 0.3f, 0.5f};

const int iDim=3;

int iMassiv[iDim]={1, 2, 3};

char cArray[]={‘a‘, ‘b‘, ‘c‘, ‘d‘};

Встретив в тексте программы указание о создании массива из Пример 4.2 - Выделение памяти под массив - student2.ru элементов типа Пример 4.2 - Выделение памяти под массив - student2.ru , компилятор выделяет блок памяти объема равного Пример 4.2 - Выделение памяти под массив - student2.ru * Пример 4.2 - Выделение памяти под массив - student2.ru и размещает в нем элементы массива в порядке, указанном в его определении.

Множество всех массивов из Пример 4.2 - Выделение памяти под массив - student2.ru элементов типа Пример 4.2 - Выделение памяти под массив - student2.ru является типом данных, для обозначения которого используется конструкция вида Пример 4.2 - Выделение памяти под массив - student2.ru , которая не является идентификатором. Например, множество всех массивов из 10 объектов типа double образует тип double[10]. Встроенные операции над массивами в языке Си отсутствуют.

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

Type Name[константа типа int];

Пример 4.2 - Выделение памяти под массив

// Для массива из 10 элементов типа float

float fArray[10];

// Для массива из 13 указателей на int

const int Dim=13;

int* pInt[Dim];

4.2 Указатели и массивы. Доступ к элементам массивов

Указатель на константу. Указатель-константа. Адрес массива. Адреса элементов массива. Операции с указателями. Операция индексирования.

Указатели были введены в 3.3. Так называются переменные, которые используются для хранения адресов. Там же было сказано о том, что получить адрес объекта можно по его имени при помощи операции, обознача­е­мой символом &. Получить объект по указателю с его адресом можно при помощи операции, обозначаемой символом *. Обе операции являются унарными и имеют второй приоритет.

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

сonst Тип* Имя=АдресКонстанты;

В этом случае контроль за использованием такого указателя возлагается на компилятор.

Пример 4.3 - Указатели на константу

// Создание константы типа int

const int constInt=3;

// Создание указателя на константу

const int* pconstInt=&constInt;

// Попытка изменения константы является ошибкой

*pconstInt=1; // ошибка

// Попытка создания указателя на константу является ошибкой

int* p=&constInt; // ошибка

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

Тип* const Имя_Указателя=АдресОбъекта;

Такие указатели называются указателями-константами.

Наши рекомендации