Массивный против S++ Производные типы данникс


Download 26.83 Kb.
bet1/4
Sana27.01.2023
Hajmi26.83 Kb.
#1134020
  1   2   3   4
















Массивный против S++




1. Производные типы данникс


Типы продукции


* - индикатор;
& - ссылка на сайт;
[ ] - множество;
( ) – функция;
получаются из стандартных типов или классов с помощью операции объявления (их еще называют модификаторами типа).

Массив представляет собой последовательную группу ячеек памяти с одним именем и одним типом.


Массив в S++ — это последовательность элементов одного и того же типа.
Доступ к каждому элементу осуществляется по его положению в массиве. Эта форма называется индексацией.
Описание массива, размер, спецификация типа, идентификатор и размер:


типа спецификации (массив имен)



в [ 10 ];

Доля

Размер массива должен быть больше 1.
В программе можно обращаться как к массиву целиком (по его имени), так и к отдельным компонентам (элементам) массива. Например,

интервал я = 123;


а[2] = я;
я = а[7];
Значение размерности должно быть постоянным выражением, т.е. мать долга быть известной на этапе трансляции. Это означает, что нельзя использовать переменную (как v Pascal) для размера массива.


2. Массивный. Синтаксис объявления


Массивно представляют собой производственные типы (показатели также относятся к производственным типам).


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

внешний интервал intArray_1[];


Объявленный (именно объявленный - об этом говорит спецификатор extern) тип массива int, имя массива - intArray_1, распределённые[] указывают на то, что перед нами объявление массива.


интервал intArray_2[10];


А это уже определение массива. Все тот же тип int, имя массива - intArray, между разделителями [ i ] находится константное выражение, значение которого определяет размер массива.


Требование синтаксис по поводу постоянного выражения между разделителями в определении массива может быть объяснено лиш тем, что информация о количестве элементов массива требуется до момента начала выполнения программы.
intintArray_3[] = {1,2,3}; // Вот массив определений.

Количество элементов массива становится известным транслятором при анализе инициализатора. Элементам массива присваиваются соответствующие значения из списка инициализаторов.


Еще одна форма определения массива:

int intArray_4[3] = {1,2,3};


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


В резулет выполнения этого оператора в памяти выделяется область, достаточная для размещения trex объектов-представителей типа межд. Участку присваивается имя intArray_4. Элементы инициализируются значениями, входящими в состав инициализатора.
Возможна частичная инициализация массива. При этом значения получают первые элементы массива:

intintArray_5[3] = {1,2};


И определение массива определяется как массив из первых двух элементов. Значение последнего элемента массива в общем случае не определено.


Здесь обязательно обратите внимание на одну интересную особенность синтаксиса инициализатора массива. Это относится к необязательному резервному копированию и списку консоли инициализаторов. По-видимому, е╦ назначение замыкается в том, чтобы указать на факт частичной инициализации массива.
На самом деле последний вариант (частично) массива определения оператора инициализации выглядит так:
int intArray_5[3] = {1,2,};

Последняя запятая предполагает фактически частичную инициализацию массива. Затраты на связывание запятой в конце списка инициализаторов со строго определенным контекстом Частичная инициализация оказывается значимой, что последняя запятая традиционно (по краине всего лишь со временем выхода "Справочного руководства по зыку программирования C++") оказывается всего лишь необязательным любой (в том числе и полной инициализации.


int intArray_6[3] = {1,2,3};


int intArray_6[3] = {1,2,3,};// Полная инициализация с запятой
intintArray_6[] = {1,2,3};
int intArray_6[] = {1,2,3,};

Между этими операторами не существует никакой разницы.


А вот в таком контексте

int intArray_6[3] = {1,2,}; // Частичная инициализация массива трассировки элемента trex


Последняя запятая и фигурныx скобках - не лее как позднее украшение. Что-то недоказанное таится в таком операторе присвоения.


интервал intArray_7[];


Голосование это неправильное объявление. Без спецификатора внешний переводчик воспринимает это как ошибку. И вскоре причиной моего обсудим является етого явления.


Download 26.83 Kb.

Do'stlaringiz bilan baham:
  1   2   3   4




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling