Российский Государственный Технологический Университет им. К.Э. Циолковского
Опубликован: 02.03.2007 | Доступ: свободный | Студентов: 5636 / 790 | Оценка: 3.96 / 3.45 | Длительность: 27:04:00
ISBN: 978-5-9556-0086-4
Лекция 5:

Массивы

< Лекция 4 || Лекция 5: 12345 || Лекция 6 >
Аннотация: В этой лекции обсуждаются массивы. Функциональность класса массива, категории массивов, синтаксис объявления, инициализация, применение массивов

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

Массив. Объявление

Массив – множество однотипных элементов. Это тоже ТИП. Любой массив наследует класс (является производным от класса – о принципе наследования позже) System.Array.

Существует несколько способов создания группировок однотипных объектов:

  • объявление множества однотипных элементов в рамках перечисления (класса, структуры),
  • определение собственно массива.

Принципиальная разница состоит в следующем:

  • доступ к данным - членам перечисления, класса производится ПО имени данного члена (элементы перечисления, класса или структуры ИНОГДА могут быть одного типа, но каждый член всегда имеет собственное имя),
  • элементы массива ВСЕГДА однотипны, располагаются в непрерывной области памяти,
  • доступ к элементу массива осуществляется по индексу, при этом допускается случайный доступ.

Одной из характеристик массива является ранг или размерность массива. Массив размерности (или ранга) N ( N определяет число измерений массива) – это Массив массивов (или составляющих массива) ранга N–1. Составляющие массива – это массивы меньшей размерности, являющиеся элементами данного массива. При этом составляющая массива сама может быть либо массивом, либо элементом массива:

ОбъявлениеМассива ::=
ИмяТипа СписокСпецификаторовРазмерности ИмяМассива [ИнициализацияМассива]; 
ИмяТипа ::= Идентификатор
ИмяМассива ::= Идентификатор

СписокСпецификаторовРазмерности
::= [СписокСпецификаторовРазмерности] СпецификаторРазмерности
::= [СписокНеявныхСпецификаторов]
СпецификаторРазмерности ::= []
СписокНеявныхСпецификаторов
СписокНеявныхСпецификаторов ::= [СписокНеявныхСпецификаторов ,] НеявныйСпецификатор
НеявныйСпецификатор ::= ПУСТО | РАЗДЕЛИТЕЛЬ
Листинг 5.1.

ПУСТО – оно и есть пусто.

РАЗДЕЛИТЕЛЬпробел, несколько пробелов, символ табуляции, символ перехода на новую строку, комбинация символов "новая строка/возврат каретки" и прочая икебана...

При объявлении массива действуют следующие правила:

  • Спецификатор размерности, состоящий из одного неявного спецификатора [], специфицирует составляющую массива размерности 1.
  • Спецификатор размерности, состоящий из N неявных спецификаторов [ ,,, ... ,], специфицирует составляющую массива размерности N.
  • Длина списка спецификаторов размерности массива не ограничена.

При этом информация о типе составляющих массива в объявлении массива определяется на основе типа массива и списка его спецификаторов размерности.

Синтаксис объявления массива (ссылки на массив) позволяет специфицировать массивы произвольной конфигурации без какого-либо намека на количественные характеристики составляющих массивы элементов.

Ниже представлены способы ОБЪЯВЛЕНИЯ ссылок на массивы РАЗЛИЧНОЙ размерности и конфигурации:

// Объявлены ссылки на массивы размерности 3 элементов типа int.
// Это массивы составляющих, представляющих собой массивы элементов
// размерности 2 одномерных массивов элементов типа int.
// Размеры всех составляющих массивов одного уровня равны
// между собой (так называемые "прямоугольные" массивы). 
int[,,] arr0; 
int[	,	,	] arr1; 
int[
,
,
] arr2; 
// Объявлена ссылка на 
// ОДНОМЕРНЫЙ(!) массив 
// ОДНОМЕРНЫХ(!) элементов массива, каждый из которых является 
// ОДНОМЕРНЫМ(!) массивом элементов типа int.
int[][][] arr3;
// Объявлена ссылка на 
// ОДНОМЕРНЫЙ(!) массив составляющих, каждая из которых является 
// ДВУМЕРНЫМ(!) массивом массивов элементов типа int.
// При этом никаких ограничений на размеры "прямоугольных" составляющих
// данное объявление не содержит. У всех составляющих могут быть разные
// размеры.
int[][,] arr4;
// Объявлена ссылка на 
// ДВУМЕРНЫЙ(!) массив составляющих, каждая из которых является 
// ОДНОМЕРНЫМ(!) массивом элементов типа int.
// При этом никаких ограничений на размеры одномерных составляющих
// данное объявление не содержит. У всех составляющих могут быть разные
// размеры.
int[,][] arr5;

Рассмотренный синтаксис объявления и инициализации массива позволяет определять ДВЕ различных категории массивов:

  • простые (прямоугольные) массивы,
  • jagged (вложенные) массивы.
< Лекция 4 || Лекция 5: 12345 || Лекция 6 >
kewezok kewezok
kewezok kewezok
Елена Шляхт
Елена Шляхт
Объясните плиз в чем отличие а++ от ++а
Почему результат разный?
int a=0, b=0;
Console.WriteLine(a++); //0
Console.WriteLine(++b); //1
a++;
++b;
Console.WriteLine(a); //2
Console.WriteLine(b); //2