Основы языка
© 2000-2011, MetaQuotes Software Corp.
142
MyTime t[100]; // массив содержащий элементы типа MyTime
Индексом массива может быть только целое число. Допускаются не более чем четырехмерные
массивы. Нумерация элементов массива начинается с 0. Последний элемент одномерного массива
имеет номер на 1 меньший, чем размер массива, то есть обращение к последнему элементу
массива из 50 целых чисел будет выглядеть как a[49]. То же самое относится и к многомерным
массивам – индексация одного измерения производится от 0 до размер измерения-1. Последний
элемент двумерного массива из примера будет выглядеть как m[6][49].
Статические массивы не могут быть представлены в виде таймсерий, то есть к ним не применима
функция ArraySetAsSeries(), которая устанавливает доступ к элементам массива от конца массива
к его началу. Если требуется обеспечить доступ к массиву как в таймсериях, используйте объект
динамического массива.
При доступе за пределы массива исполняющая подсистема сгенерирует критическую ошибку и
выполнение программы будет остановлено.
Спецификаторы доступа
Спецификаторы доступа указывают компилятору каким образом можно осуществлять доступ к
переменным, членам структур или классов.
Спецификатор const объявляет переменную константой, и не позволяет изменять значение этой
переменной в процессе выполнения программы. Допускается однократная инициализация
переменной при ее объявлении. Спецификатор const неприменим к членам структур и классов.
Пример
int OnCalculate (const int rates_total, // размер массива price[]
const int prev_calculated, // обработано баров на предыдущем вызове
const int begin, // откуда начинаются значимые данные
const double& price[] // массив для расчета
);
Для доступа к членам структур и классов используются следующие спецификаторы:
public – разрешает ничем неограниченный доступ к переменной или методу класса;
protected – разрешает доступ со стороны методов данного класса, а также со стороны методов
публичнонаследуемых классов. Иной доступ невозможен;
private – разрешает доступ к переменным и методам класса только из методов данного класса.
virtual – применим только к методам класса (но не к методам структур) и сообщает
компилятору, что данный метод должен быть размещен в таблице виртуальных функций класса.
Классы памяти
Существуют три класса памяти: static, input и extern. Эти модификаторы класса памяти явно
указывают компилятору, что соответствующие переменные распределяются в предопределенной
области памяти, называемой глобальным пулом. При этом данные модификаторы указывают на
особую обработку данных переменных.
Если переменная, объявленная на локальном уровне, не является статической, то распределение
памяти под такую переменную производится автоматически на программном стеке. Освобождение