Структура — это совокупность переменных, объединенных одним именем, предоставляющая общепринятый способ совместного хранения информации. Объявление структуры приводит к образованию шаблона, используемого для создания объектов структуры. Переменные, образующие структуру, называются членами структуры. (Члены структуры также часто называются элементами или полями.)
Обычно все члены структуры связаны друг с другом. Например, информация об имени и адресе, находящаяся в списке рассылки, обычно представляется в виде структуры. Следующий фрагмент кода объявляет шаблон структуры, определяющий имя и адрес. Ключевое слово struct сообщает компилятору об объявлении структуры.
struct trade_settings { uchar slippage; // значение допустимого проскальзывания -размер 1 байт char reserved1; // 1 байт пропуска short reserved2; // 2 байта пропуска int reserved4; // еще 4 байта пропуска. Обеспечили выравнивание на границу 8 байт double take; // значения цены фиксации прибыли double stop; // значение цены защитного стопа };
Объявление завершается точкой с запятой, поскольку объявление структуры — это оператор. Имя структуры trade_settings идентифицирует структуру данных и является спецификатором типа. Имя структуры часто используют как ярлык.
На данный момент на самом деле не создано никакой переменной. Определена только форма данных. Для объявления настоящей переменной, соответствующей данной структуре, следует написать:
struct trade_settings trade_set;
В данной строке происходит объявление переменной trade_set типа trade_settings. При объявлении структуры определяется переменная смешанного типа. До тех пор, пока не будет объявлена переменная данного типа, она не будет существовать.
Ещё пример:
Структура, для хранения информации об ордере:
struct MyOrder { datetime time; int profit; string sltp; int ticket; double slip; };
Объявим переменные структуры для хранения информации о последних ордерах
MyOrder last_buy_order, last_sell_order;
Доступ к членам структуры
Имя структуры является новым типом данных и позволяет объявлять переменные этого типа. Структура может быть объявлена только один раз в пределах проекта. Доступ к членам структур производится при помощи операции точка (.).
Пример:
struct trade_settings { double take; // значения цены фиксации прибыли double stop; // значение цены защитного стопа uchar slippage; // значение допустимого проскальзывания }; //--- создали и проинициализировали переменную типа trade_settings trade_settings my_set = {0.0,0.0,5}; if (input_TP>0) my_set.take=input_TP;