![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Отсюда вывод: у MQL IV и С++ много общего, но есть и различия. Главное не запутаться и разобраться в чем причина ошибки.
отсюда наверное и путаница (MQL и С) ...
Совершенно верно.
В С++ нет типа string, вместо него используется указатель на массив символов (char *str1).
Но можно объявить тип string таким образом: typedef char * string;
Таким образом в С++ переменная типа string равная NULL является пустой строкой, т.е. равна "",
в то время как в MQL IV переменная типа string равная NULL не является пустой строкой, она равна "0"
/Ч.Т.Д.
Вывод неверен.
Таким образом в С++ переменная типа string равная NULL является пустой строкой, т.е. равна ""
Неа,
попробуйте в Си обратиться к переменной типа string которая равна NULL.
Либо прога свалится, либо эксепшен получите.
А то, что в некоторых функциях вместо указателя на строку можно передать NULL говорит только о том, что внутри нее есть проверка на этот NULL.
и далее на собственном же примере...
на основе всего вешесказанного можно сделать вывод, что в С++ строка - это указатель на массив символов, а в MQL IV строка - это массив символов или что-то там еще, Вам виднее. Отсюда и получается, что передавать NULL в качестве строкового параметра в пользовательскую функцию нежелательно, т.к. вместо ожидаемого "" получаем "0".
Таким образом в С++ переменная типа string равная NULL является пустой строкой, т.е. равна ""
Неа,
попробуйте в Си обратиться к переменной типа string которая равна NULL.
Либо прога свалится, либо эксепшен получите.
Вот кусок кода, где все прекрасно работает
результат будет следующий : Ex1=0/Ex2=/
Само собой разумеется есть, иначе до сих пор работали бы в Бэйсике на ZX-Spectrum :)
и что такое
Конкретнее, разберитесь с тем что такое cout << ....
И вы сами ответите на свой вопрос.
Ответ я уже давал выше.
s - указатель на массив символов char, равный NULL, поэтому cout << s дает пустую строку "". Так работают строки в С++
и что такое
а здесь NULL приводится к типу char и дает ноль, т.е. строку из одного символа содержащую "0". Так обрабатываются строки равные NULL в MQL.
Очевидно, что т.к. в MQL нет указателей вообще (хотя для строк и массивов можно было бы сделать исключение) передача параметров в функции реализована исключительно по значению, а отсюда повышенный расход памяти и процессорного времени.
Это не так, но не в том суть.
Скажите, что такое "<<" ?
И что такое "cout << ..." ?
Дам наводку.
Поищите в *.h файлах описание cout, посмотрите ее тип, и поищите описание этого типа.
И может быть даже в предков углубиться придется.
Поищите там описание оператора "<<", посмотрите сколько их там.
После этого посмотрите то, что вы написали выше.
cout << a - это вызов определенной пользователем функции.
Причем таких функций много, для разных типов переменной а есть своя функция.
И более того, вы можете даже сами добавить несколько таких функций в язык.
Эта конструкция никакого отношения к С++ и к его компилятору не имеет.
Точнее сказать не могу, нет у меня ничего под рукой, ни книг, ни С++ компилятора.
----------------------------------------------------
В общем-то это уже офтопик.