Пример 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‘};

 

 

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

Множество всех массивов из элементов типа является типом данных, для обозначения которого используется конструкция вида , которая не является идентификатором. Например, множество всех массивов из 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 Имя_Указателя=АдресОбъекта;

 

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