Студопедия — R.8.2.4 Массивы
Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

R.8.2.4 Массивы






В описании T D, в котором D имеет вид D1 [ выражение-константа opt ] описывается идентификатор типа "... массив T". Есливыражение-константа присутствует ($$R.5.19), то оно должно иметьцелочисленный тип и значение, большее 0. Это выражение задает числоэлементов массива. Если значение выражения-константы есть N, томассив имеет N элементов с индексами от 0 до N-1. Массив можно образовывать из: одного из основных типов (за исключениемvoid), указателя, указателя на члены, класса, перечисления или издругого массива. Если подряд идут несколько спецификаций "массив...", образуетсямногомерный массив, причем выражение-константа, задающее границымассива, может отсутствовать только для первого массива. Такое умолчаниеполезно в случае параметров функции типа массив, а также когда массивявляется внешним, а его определение, с которым связано резервированиепамяти, находится в другом месте. Первое выражение-константа можетбыть пропущено и в том случае, если за описателем следуетсписок-инициализаторов ($$R.8.4). Тогда размер массива определяетсячислом элементов, приведенных в инициализаторе ($$R.8.4.1). В описании float fa[17], *afp[17]; описаны массив чисел типа float и массив указателей на числа типа float,а в описании static int x3d[3][5][7]; описан статический трехмерный массив целых размера 3x5x7. Строгоговоря, x3d является массивом из трех элементов, каждый из которыхесть массив из пяти массивов, а каждый из последних является массивомиз семи целых. В выражении допустимо появление любого из следующихвыражений: x3d, x3d[i], x3d[i][j], x3d[i][j][k]. Если в выражении участвует идентификатор типа массив, то, исключаяслучаи операнда в операциях sizeof или & и инициализатора дляссылки ($$R.8.4.3), его тип преобразуется в указатель на первыйэлемент массива. Несмотря на это преобразование, массивы не являютсяизменяемыми адресами. Если не считать случай использования массивапри описании класса ($$R.13.4.5), операция индексации определяетсятак, что E1[E2] совпадает с *((E1) + (E2)). С учетом правилпреобразования типов для операции +, если E1 есть массив, а E2целое, то E1[E2] указывает на E2-элемент из E1. Поэтому, несмотряна свой асиметричный вид, индексация - коммутативная операция. Аналогичное правило действует и для многомерных массивов. ЕслиE - n-мерный массив размера ixjx...xk, то в выражении онпреобразуется в указатель на (n-1)-мерный массив размера jx...xk.Если к этому указателю явно или неявно в результате индексации применяетсяоперация *, указуемый (n-1)-мерный массив сам немедленно преобразуетсяв указатель. Например, рассмотрим описание int x[3][5]; Здесь описан массив из 3x5 целых. Если в выражении появляется x, тооно преобразуется в указатель на первый массив из пяти целых.Если в выражении появляется x[i], что эквивалентно *(x+i), в началеx преобразуется в указатель, как было сказано выше, затем x+iпреобразуется к типу x, для чего необходимо i умножить на размер объекта,на который указывает x, т.е. на размер пяти целых. Затем происходитсложение и применяется косвенность, после чего получим массив (из пятицелых), который в свою очередь преобразуется в указатель на первое изцелых. Если есть еще одна индексация, процесс повторяется, и на этот размы получим в результате целое. Из всего этого следует, что массивы В С++ хранятся по строкам(последний индекс изменяется быстрее всего), а значение первогоиндекса из описания позволяет вычислить размер памяти, необходимойдля массива, однако при вычислении индексного выражения первый индексроли не играет.







Дата добавления: 2015-09-04; просмотров: 310. Нарушение авторских прав; Мы поможем в написании вашей работы!



Аальтернативная стоимость. Кривая производственных возможностей В экономике Буридании есть 100 ед. труда с производительностью 4 м ткани или 2 кг мяса...

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

Расчетные и графические задания Равновесный объем - это объем, определяемый равенством спроса и предложения...

Кардиналистский и ординалистский подходы Кардиналистский (количественный подход) к анализу полезности основан на представлении о возможности измерения различных благ в условных единицах полезности...

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

Педагогическая структура процесса социализации Характеризуя социализацию как педагогический процессе, следует рассмотреть ее основные компоненты: цель, содержание, средства, функции субъекта и объекта...

Типовые ситуационные задачи. Задача 1. Больной К., 38 лет, шахтер по профессии, во время планового медицинского осмотра предъявил жалобы на появление одышки при значительной физической   Задача 1. Больной К., 38 лет, шахтер по профессии, во время планового медицинского осмотра предъявил жалобы на появление одышки при значительной физической нагрузке. Из медицинской книжки установлено, что он страдает врожденным пороком сердца....

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

Тактика действий нарядов полиции по предупреждению и пресечению правонарушений при проведении массовых мероприятий К особенностям проведения массовых мероприятий и факторам, влияющим на охрану общественного порядка и обеспечение общественной безопасности, можно отнести значительное количество субъектов, принимающих участие в их подготовке и проведении...

Тактические действия нарядов полиции по предупреждению и пресечению групповых нарушений общественного порядка и массовых беспорядков В целях предупреждения разрастания групповых нарушений общественного порядка (далееГНОП) в массовые беспорядки подразделения (наряды) полиции осуществляют следующие мероприятия...

Studopedia.info - Студопедия - 2014-2024 год . (0.012 сек.) русская версия | украинская версия