![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
С какой именно? Не могли бы уточнить? Вернее, меня интересует билд, в котором не надо было указывать амперсанд.
Если я не ошибаюсь, то указывать амперсанд для передачи по ссылке надо было всегда.
Оказывается без амперсенда можно компилировать без ошибок, если массив только читается в функции.
Если его надо заполнять, то ссылка обязательна.
Вадим, если передается адрес то амперсенд обязателен
амперсенд - гворит о том что передается именно АДРЕС массива
--
в Си всегда надо было ставить амперсенд если вы хотели получить адрес
в MQL аналогично
а MQL по синкаксису фактически вырос из Си - тут связь прямая
---
что касаемо того что компилит без ошибок - это нормально
просто компилятору - явно надо указвать что желаем передать!
Я проверил код:
в билдах:
- 190 от 23.02.2006
- 200 от 14.11.2006
- 210 от 10.09.2007
- 218 от 26.08.2008
Во всех четырёх билдах данный код нормально компилируется и нормально исполняется.
to KimIV
этот код без возврата значения, здесь подвоха нет.
а то что я видел - ну как приснилось, но приснится то не могло, т.к. прикольно было - single возвращают как массив.
так вот - пробую как в том посте ничего не получается вглубь до 196 сборки((((
Я проверил код:
в билдах:
- 190 от 23.02.2006
- 200 от 14.11.2006
- 210 от 10.09.2007
- 218 от 26.08.2008
Во всех четырёх билдах данный код нормально компилируется и нормально исполняется.
А такой будет с ошибками компилироваться:
to KimIV
этот код без возврата значения, здесь подвоха нет.
Дело не в возврате значения, а в попытке модификации полученного значения. Амперсанд как раз и обозначает передачу параметра по ссылке, то есть в функцию передается ссылка на значение, а значит возможны манипуляции с переданным параметром. Если же амперсанд не стоит, то передается копия (фактически, константа), а не само значение.
Дело не в возврате значения, а в попытке модификации полученного значения. Амперсанд как раз и обозначает передачу параметра по ссылке, то есть в функцию передается ссылка на значение, а значит возможны манипуляции с переданным параметром. Если же амперсанд не стоит, то передается копия (фактически, константа), а не само значение.
это очень важный вопрос, поэтому нужно переспросить о массивах.
1 вариант - модификацию (возврат) запрещает компиллятор в порядке управления доступом к переменным разного укровня.
2.-й вариант - модификация запрещена потому что передается не ссылка а копия векторной перемнной.
т.е. во втором случае скоростьвыполнения функциирезко падает.
Какой именно вариант реализован в МQ?
Здравствуйте, ответте на вопрос: можно ли обрабатывать в функции n-мерные массивы?
Например
при компиляции выдает кучу ошибок например: '>=' - wrong dimension
в случае с одномерным массивом такой проблемы нет.
Здравствуйте, ответте на вопрос: можно ли обрабатывать в функции n-мерные массивы?
Например
при компиляции выдает кучу ошибок например: '>=' - wrong dimension
в случае с одномерным массивом такой проблемы нет.
Попробуйте так: