000106. Массивы и структуры
Массивы и структуры|Всем привет! Сегодня мы будем разбирать понятие структуры и научимся с ней работать.|wmysterio|wmysterio||||Прежде всего хочу сказать, что структура - это пользовательский набор данных. Этот набор может содержать различные типы данных и функции. Синтаксис написания таков:
Создавать структуру нужно в месте, где к ней можно получить доступ. Xто бы можно получать доступ её свойствам с любого места, эти элементы должны быть открытые ( public ). В качестве примера, создадим структуру с именем PC, и добавим ей поля, которые можно сделать с этой структурой.
Как видим, наша структура состоит из 3-х полей - Имя Компьютера, параметры видеокарты и к-во ядер процессора. Добавим эту структуру в код c#:
Как видим, структура создана до функции "Thread", что бы она была видима нашему "потоку". Теперь мы создали свой тип данных - PC, которая является структурой. В нашем "потоке" мы можем создать переменную этого типа и выполнять какие-то действия над ней. Давайте заполним её информацией:
Обращение к полям структуры делается через точку. Чтобы считать данные из структуры, мы должны создать переменную того же типа, что и поле структуры:
По этому же принципу делались структуры и в GTA SA, адреса полей которых мы считывали через игровую память с помощью Sanny Builder. Размер структуры может быть любым и содержать любые данные, а не только целые и дробные числа. Например, структура может содержать в себе другую структуру, внутри которой массив объектов какого-то класса, а сам класс может содержать свои методы и свои структуры. В общем: иерархия может быть огромной. Главное, что бы мозги не лопнули содержать всё в памяти :) Но мы ограничимся этими примерами, так пользоваться структурами будем не часто, но знать о них вы должны. Чаще всего создают классы, но о них я расскажу, когда будем изучать ООП.
Вторая часть урока посвящена массивам. Массивы в c# более гибкие, чем в Sanny Builder, так как с ними множество вариантов работы. Массив - это совокупность элементов конкретного типа. Новый экземпляр массива задаётся оператором new. Синтаксис написания таков:
В начале мы указываем компилятору, что мы будем создавать массив, возле типа указываем квадратные скобки. Дальше создаём новый экземпляр и в скобках указываем уже размерность нового массива. В нашем случаи массив "Array" будет состоять из 5 элементов. Ниже мы уже задаём значения для него, обращаясь по индексу. Как и в Sanny Builder, индексирование начинается с нуля.
Имея эти знания и структуру выше, мы можем сделать массив этих структур:
Теперь мы можем обращаться к элементам массива и задавать свои значения. Следующий код является таким примером ;)
До этого момента мы рассматривали одномерные массивы. То есть массивы, которые содержат ( образно ) одну строку и схематично их можно нарисовать так:
Здесь 0, 1, 2 ... N - элементы массива "ArrayPC". Так, как наш массив состоит из структур, то схематично это можно обозначить так:
Но есть и многомерные массивы, которые могут содержать строки, ряды и целые кубы ( это образно. Нужно просто представить всё и мои рисунки, надеюсь, помогут вам ) данных. Схематично двухмерный массив изображается так:
У нас имеется M массивов, каждый из которых содержит по N элементов. Это и есть двумерный массив. В "народе" такие массивы часто называют матрицей, размерностью MxN. Если предположить, что количество массивов - 3, где содержаться по 2 элемента, то всего массив может содержать 3*2=6 элементов.
Объявляются двумерные массивы следующим образом:
В первых скобках указывается запятая. К-во запятых должно быть на единицу меньше, чем размерность массива. Во вторых: мы явно указываем эту размерность. Вот пример двухмерного массива:
Запись и считывание элементов также происходит по индексу. Первое число в скобках в какую строку "матрицы" будет идти запись, второе число - в какой элемент. Вот мы создали заполненный массив структур "PC". Схематично данный пример можно изобразить так:
С количеством элементов нужно ограничиваться, так как чем больше их, тем сложнее их обработка. Если их будет слишком много, то это может привести вылету игры и даже зависанию вашего ПК. Это может произойти из за того, что все рассмотренные массивы относятся к одной большой группе - статичные. К динамичным мы перейдём немного позже, а пока на этом остановимся.
На этом урок окончен. ;)|783|1|0|60936603png
313`40
\|21297514
png309
199
`||sktruktury|1511984921
Last updated