Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
О чем дальше говорить Если передается структура, Но не передается массив)))
Адресная арифметика предполагает наличие возможности действий с адресными указателями. Такие как сложение и вычитание - сложение адреса и целого числа, вычитание из адреса целого числа, разница двух адресов, при этом результат операции зависит от типа указателя..
Структура - это вовсе не массив адресных ссылок (массив адресных ссылок можно рассматривать только как один частный случай структуры). Структура - это набор данных любых типов, хранящихся совместно.
Не путайте понятия "передавать" и "возвращать". В mql5 можно передавать в качестве параметра и массивы, и структуры, и любые типы данных, в том числе и по ссылке.
Зачем возвращать из функции что-либо сложнее атомарных типов?
1.
структура это развитие массива. Если со структурой -"можно" а с массивом -"нельзя" то это исскуственное ограничение.
2.
Если бы МТ был платный, вот тогда спор имел бы хоть какой то смысл. А так - вы делаете как можете, мы используем как получится.
3.
Более того, я согласен (т.е не против) с исскуственными ограничениями в МТ))))
4.
Спор можно окончить очень просто - я удаляю свои посты - вы свои, = зачем мне критиковать Вашу Епархию.
Удаляем?
1. Массив - это совсем другая сущность. Структура - набор данных любых типов, ограниченный описанием. Массив совокупность однотипных данных, ограниченная размерностью.
2. Не понял фразы
3. Нет искусственных ограничений. Ограничение по возврату массива - естественное, во-первых, из-за отсутствия адресной арифметики, во-вторых из соображений безопасности кода.
Представляете, что будет, если позволить такое
Порча возвращённого массива гарантирована.
4. Я не собираюсь удалять свои посты
Пример адресной арифметики Metalang трехмерный массив комментировать небуду. а вот со строками - в функцию передается адрес (ссылка на) массив указателей (адресов) символльных строк. далее функция делает с элементами строковго массива все что хочет. Т.е. строки ==элемент массив азаново инициируются., т.е. динамически распределляется память. Это означает что Metalang использует в случае массива строк косвенную адресацию вида *array[].
P.S.Забыл дописать что строка это массив байт ограниченный нулем,-как видите при возврате по значению массива байт ничего страшного не происходит.
Ещё раз. Адресная арифметика предполагает произвольное изменение адресов, указывающих в оперативную память, причём прямое изменение, а не опосредованное. Причём именно изменение адресов, а не содержимого, хранящегося по этим адресам.
результат операций над указателями зависит от типа этих самых указателей
В результате одной и той же операции инкремента указатели cp и ip будут указывать на разные ячейки памятиЭто просто, очень просто сделать, поскольку работа компилятора ни в чем таком принципиальном не изменяется.
- Компиллятор и без программиста собирает эти адреса,, и сам распределяет ** &&..
То что вы называeтe адресной арифметикой и которой якобы нет это не сама адресная арифметика а ее интерфейс
Т.е. в Metalang адресная арифметика есть, однако к ней нет программного интерфейса.
____Возврат инициированной в функции символьной строки, которая в свою очередь элемент массива возможен и - работает прекрасно,
а вот возврат массива не возможен, увы))) якобы нельзя.
Передача структуры по ссылке - с удовольствием :) - но сегодня это работает только в пределах одного модуля. А как мне отдать структуру на переработку функции из другого модуля и получить ее назад?
Вот еще больная тема косвенно связанная с этим вопросом: 'доступность одной переменной в разных модулях программы ...'
А может есть какой-нибудь платный нормальный клиентский API (для С/С++)? Как раньше был бесплатный.
Или механизм какой-нибудь типа callback'а, что бы можно было выполнять операции в терминале по инициативе dll-ки. Без этого полноценно в dll-ку логику не вынести, разве что сделать API для API метатрейдера, что бы его в dll юзать для получения торговых параметров, но без такого callback'а придется весь массив данных из MT кидать в dll по каждому тику.
1. Массив - это совсем другая сущность. Структура - набор данных любых типов, ограниченный описанием. Массив совокупность однотипных данных, ограниченная размерностью.
1. Для MQL - верно, для других языков (например мой любимый PHP) не верно.
2. В PHP с массивами можно делать ВСЁ.
3. Ссылка в описании на массивы: