# Массивы

**Массивы** представляют собой последовательный набор элементов одного типа (тип массива). К каждому элементу массива можно обратиться используя его индекс (порядковый номер элемента в массиве). Нумерация элементов начинается с нуля. Массивы доступны в San Andreas, LCS и VCS.

## Общий синтаксис

San Andreas:

```pascal
<имя массива>(<индекс>,<размер><тип>)
```

`<имя массива>`: локальная или глобальная [переменная](/ru/coding/variables.md)\
`<индекс>`: локальная или глобальная переменная, содержащая индекс элемента, который нужно прочитать или изменить\
`<размер>`: целое число от 1 до 255 (включительно)\
`<тип>`: одна из букв `i` `f` `s` `v`:

| Буква | Тип элемента      | Размер элемента (в байтах) |
| ----- | ----------------- | -------------------------- |
| i     | целое число       | 4                          |
| f     | дробное число     | 4                          |
| s     | строковый литерал | 8                          |
| v     | строковый литерал | 16                         |

Пример:

```pascal
$index = 0
$array($index,10i) = 1
```

Liberty City Stories, Vice City Stories:

```pascal
<имя массива>(<индекс>,<размер>)
```

В LCS и VCS длина элементов массивов может быть только 4 байта. Поэтому нет необходимости указывать тип массива при обращении к его элементам.

Пример:

```pascal
$index = 0
$array($index,10) = 1
```

## Объявление массивов <a href="#array-declaration" id="array-declaration"></a>

Массивы, как и отдельные [переменные](/ru/coding/variables.md), могут быть объявлены при помощи ключевого слова `var`:

```pascal
var <имя массива>: array <размер> of <тип>
```

Пример:

```pascal
var $FloatArray: array 10 of Float
```

Массивы с элементами примитивного типа могут быть объявлены при помощи короткой записи вида:

```pascal
<тип> <имя массива>[<размер>]
```

Допустимыми типами в таком объявлении являются `Int`, `Float`, `String`, `LongString`:

```pascal
int intArray[10]
float floatArray[10]
string stringArray[10]
longstring longStringArray[10]
```

### Обращение к элементам массива после объявления <a href="#accessing-array-elements" id="accessing-array-elements"></a>

После объявления массива можно обращаться к его элементам, используя квадратные скобки:

```pascal
var $FloatArray: array 10 of Float

$index = 0

// увеличить значение первого элемента на 100
$FloatArray[$index] += 100.0

// аналогично
$FloatArray[0] += 100.0
```

С массивами, содержащими [строковые литералы](/ru/coding/data-types.md#strokovye-literaly), можно работать используя [строковые переменные](/ru/coding/data-types.md#strokovye-peremennye): &#x20;

```pascal
// задаем значения для первых трех элементов массива $strings
s$strings[0] = 'str1'
s$strings[1] = 'str2'
s$strings[2] = 'str3'
```

Массив может быть объявлен как коллекция [экземпляров класса](/ru/coding/classes.md#ekzemplyary-klassa), его методы будут доступны для каждого элемента:

```pascal
var $players: array 2 of Player

$players[0].Build 
```

{% hint style="info" %}
По умолчанию в [режиме](/ru/edit-modes.md) `GTA SA` дизассемблер выводит элементы массива с целочисленными константами. В LCS и VCS эта возможность присутствует, но по умолчанию выключена. [Отладочная опция](/ru/editor/console.md#constant_indexes) `CONSTANT_INDEXES` позволяет включить или выключить эту возможность.&#x20;
{% endhint %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.sannybuilder.com/ru/coding/arrays.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
