Лекции.Орг


Поиск:




Категории:

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

 

 

 

 


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




Ступенчатые массивы

В приведенных выше примерах применения двумерного массива, по существу, создавался так называемый прямоугольный массив. Двумерный массив можно представить в виде таблицы, в которой длина каждой строки остается неизменной по всему массиву. Но в C# можно также создавать специальный тип двумерного массива, называемый ступенчатым массивом. Ступенчатый массив представляет собой массив массивов, в котором длина каждого массива может быть разной. Следовательно, ступенчатый массив может быть использован для составления таблицы из строк разной длины.

Ступенчатые массивы объявляются с помощью ряда квадратных скобок, в которых указывается их размерность. Например, для объявления двумерного ступенчатого массива служит следующая общая форма:

тип[ ] [] имя_ма с сив а = new тип [размер] [];

где размер обозначает число строк в массиве. Память для самих строк распределяется индивидуально, и поэтому длина строк может быть разной. Например, в приведенном ниже фрагменте кода объявляется ступенчатый массив j agged. Память сначала распределяется для его первого измерения автоматически, а затем для второго измерения вручную.

int[][] jagged = new int[3][]; jagged[0] = new int [4]; jagged[1] = new int[3]; jagged[2] = new int[5];

После выполнения этого фрагмента кода массив j agged выглядит так, как показано ниже.

 

 

Теперь нетрудно понять, почему такие массивы называются ступенчатыми! После создания ступенчатого массива доступ к его элементам осуществляется по индексу, указываемому в отдельных квадратных скобках. Например, в следующей строке кода элементу массива j agged, находящемуся на позиции с координатами ( 2, 1 ), присваивается значение 10.

j agged[2] [1] = 10;

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

В приведенном ниже примере программы демонстрируется создание двумерного ступенчатого массива.

// Продемонстрировать применение ступенчатых массивов.

Using System;

class Jagged {

static void Main() {

int[][] jagged = new int[3][]; jagged[0] = new int[4]; jagged[1] = new int[3]; jagged[2] = new int[5];

Int ъ;

// Сохранить значения в первом массиве. for(i=0; i < 4; i++) jagged[0] [i] = i;

// Сохранить значения во втором массиве. for(i=0; i < 3; i++) jagged[1][i] = i;

// Сохранить значения в третьем массиве. for(i=0; i < 5; i++) jagged[2][i] = i;

// Вывести значения из первого массива. for(i=0; i < 4; i++)

Console.Write(jagged[0] [i] + " ");

Console.WriteLine();

// Вывести значения из второго массива, for (i=0; i < 3; i++)

Console.Write(jagged[1][i] + " ");

Console.WriteLine();

// Вывести значения из третьего массива. for(i=0; i < 5; i++)

Console.Write(jagged[2] [i] + " ");

Console.WriteLine();

}

}

Выполнение этой программы приводит к следующему результату.

0 12 3

0 12

0 12 3 4

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

И последнее замечание: ступенчатые массивы представляют собой массивы массивов, и поэтому они не обязательно должны состоять из одномерных массивов. Например, в приведенной ниже строке кода создается массив двумерных массивов.

int[] [,] j agged = new int [ 3] [,];

В следующей строке кода элементу массива j agged [ 0 ] присваивается ссылка на массив размерами 4><2.

jagged[0] = new int [4, 2];

А в приведенной ниже строке кода элементу массива j agged [ 0 ] [1,0] присваивается значение переменной i.

jagged[0][1,0] = i;

Присваивание ссылок на массивы

Присваивание значения одной переменной ссылки на массив другой переменной, по существу, означает, что обе переменные ссылаются на один и тот же массив,

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

// Присваивание ссылок на массивы.

Using System;

class AssignARef { static void Main() { int i;

int[] numsl = new int [10]; int[] nums2 = new int [10];

for(i=0; i < 10; i++) numsl[i] = i;

for(i=0; i < 10; i++) nums2[i] = -i;

Console.Write("Содержимое массива numsl: "); for(i=0; i < 10; i++)

Console.Write(numsl[i] + " ");

Console.WriteLine();

Console.Write("Содержимое массива nums2: "); for(i=0; i < 10; i++)

Console.Write(nums2[i] + " ");

Console.WriteLine();

nums2 = numsl; // теперь nums2 ссылается на numsl

Console.Write("Содержимое массива nums2\n" + "после присваивания: "); for(i=0; i < 10; i++)

Console.Write(nums2[i] + " ");

Console.WriteLine();

// Далее оперировать массивом numsl посредством // переменной ссылки на массив nums2. nums2[3] = 99;

Console.Write("Содержимое массива numsl после изменения\п" + "посредством переменной nums2: "); for (i=0; i < 10; i++)

Console.Write(numsl[i] + " ");

Console.WriteLine();

}

}





Поделиться с друзьями:


Дата добавления: 2016-12-03; Мы поможем в написании ваших работ!; просмотров: 423 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Лучшая месть – огромный успех. © Фрэнк Синатра
==> читать все изречения...

2255 - | 2142 -


© 2015-2025 lektsii.org - Контакты - Последнее добавление

Ген: 0.011 с.