На mql тоже так можно. Не при каждом вызове функции выполняется ее вызов еще два раза - в начале фуцнкции есть return.
Называется рекурсия.
На mql тоже так можно. Не при каждом вызове функции выполняется ее вызов еще два раза - в начале фуцнкции есть return.
Называется рекурсия.
спасибо, еще будет много вопросов.. переписываю одну из библиотек на mql, по твоему совету ))
еще, посоветуйте хорошую книгу содержательную и не сильно длинную
я в универе Страуструпа читал, но думаю, что Вам вряд ли нужен учебник по базовым конструкциям языка, опыт программирования уже у Вас есть, читать с нуля Вам уже не нужен
я на C# никогда не писал, но под Windows писал программы. Когда решил попробовать свои силы в C# мне онлайн справка сильно помогла, любые мелкие вопросы уточнить, я на этом ресурсе читаю короткие статьи, вот и рекурсия С++ коротко описывается
https://metanit.com/cpp/tutorial/3.6.php
Общий учебник С++ https://metanit.com/cpp/tutorial/ , сомневаюсь, что более сжато найдете информацию чем на этом сайте ;)
- metanit.com
я в универе Страуструпа читал, но думаю, что Вам вряд ли нужен учебник по базовым конструкциям языка, опыт программирования уже у Вас есть, читать с нуля Вам уже не нужен
я на C# никогда не писал, но под Windows писал программы. Когда решил попробовать свои силы в C# мне онлайн справка сильно помогла, любые мелкие вопросы уточнить, я на этом ресурсе читаю короткие статьи, вот и рекурсия С++ коротко описывается
https://metanit.com/cpp/tutorial/3.6.php
сомневаюсь, что более сжато найдете информацию чем на этом сайте ;)
да просто вьехать в язык, там основная сложность что весь код написан через указатели и goto, еще много лишнего с выделением памяти потом уничтожением
поэтому можно констатировать, что mql и СИ это абсолютно разные языки. Даже такие простые конструкции как передачу в ф-ю указателей вместо массивов тут уже не работают, переписывать геморно
да просто вьехать в язык, там основная сложность что весь код написан через указатели и goto, еще много лишнего с выделением памяти потом уничтожением
поэтому можно констатировать, что mql и СИ это абсолютно разные языки. Даже такие простые конструкции как передачу в ф-ю указателей вместо массивов тут уже не работают, переписывать геморно
ну чем и интересен С++ это работой с указателями, у него вся гибкость языка и основана на работе с указателями - так сказать полная имитация работы с оперативной памятью процессора, процессор же не знает имен идентификаторов(имена переменных), а знает только относительные смещения данных (по сути ссылки на адреса памяти) и данные по ссылке нужно типизировать - вот этим и занимается указатель - он описывает тип данных и место где хранятся данные в памяти
MQL это действительно другой язык
указатели https://metanit.com/cpp/tutorial/4.1.php
- metanit.com
ну чем и интересен С++ это работой с указателями, у него вся гибкость языка и основана на работе с указателями - так сказать полная имитация работы с оперативной памятью процессора, процессор же не знает имен идентификаторов(имена переменных), а знает только относительные смещения данных (по сути ссылки на адреса памяти) и данные по ссылке нужно типизировать - вот этим и занимается указатель - он описывает тип данных и место где хранятся данные в памяти
MQL это действительно другой язык
указатели https://metanit.com/cpp/tutorial/4.1.php
Да, спасибо, с указателями уже знаком, и в книжке той есть
сайт удобный, кстати, добавил в избранное
вот хороший курс видеолекций для ленивых есть от с до сpp
Вот пример из хедера библиотеки:
создаются структуры с указателями непонятно на что (видимо это массивы которых еще не существует), дальше я так понял объявляются ..ээ.. переменная этой структуры mine_score; с тем же именем?
typedef struct mine_score { int n; /* number of rows of M */ int *m; /* number of cols of M[i] for each i */ double **M; /* the (equi)characteristic matrix */ } mine_score;
с этим тоже надо будет разобраться
и потом объявляется ф-я, которая будет писать свой результат напрямую в область памяти этой переменной?
mine_score *mine_compute_score(mine_problem *prob, mine_parameter *param);
Вот пример из хедера библиотеки:
создаются структуры с указателями непонятно на что (видимо это массивы которых еще не существует), дальше я так понял объявляются ..ээ.. переменная этой структуры mine_score; с тем же именем?
с этим тоже надо будет разобраться
и потом объявляется ф-я, которая будет писать свой результат напрямую в область памяти этой переменной?
Да нет, тут объявляется тип данных mine_score, который представляет из себя структуру mine_score.
А функция возвращает указатель на эту структуру, которая будет создана внутри этой функции. Соответственно, назначение функции создать сущность типа min_score и передать владение ею в область видимости вызова функции.
Maxim Dmitrievsky:
с этим тоже надо будет разобраться
и потом объявляется ф-я, которая будет писать свой результат напрямую в область памяти этой переменной?
я typedefы давно уже забыл, благо MQL помогают вспоминать эти громоздкие конструкции )), судя по всему это просто объявление типа mine_score, который является структурой и описание структуры было "воткнуто" в обьявление типа ( typedef ) , но могу ошибаться, вот похожий вопрос обсуждался и довольно подробное обьяснение:
http://qaru.site/questions/13054/typedef-struct-vs-struct-definitions
и потом объявляется ф-я, которая будет писать свой результат напрямую в область памяти этой переменной?
в С++ за распределение памяти отвечает программист, поэтому если результат ф-ции возвращает указатель mine_score * , то тот кто принимает этот указатель и должен выделить память, т.е. это не переменная а указатель на данные
- 2009.11.04
- user69514
- qaru.site
я typedefы давно уже забыл, благо MQL помогают вспоминать эти громоздкие конструкции )), судя по всему это просто объявление типа mine_score, который является структурой и описание структуры было "воткнуто" в обьявление типа ( typedef ) , но могу ошибаться, вот похожий вопрос обсуждался и довольно подробное обьяснение:
http://qaru.site/questions/13054/typedef-struct-vs-struct-definitions
в С++ за распределение памяти отвечает программист, поэтому если результат ф-ции возвращает указатель mine_score * , то тот кто принимает этот указатель и должен выделить память, т.е. это не переменная а указатель на данные
#include "pch.h" #include <iostream> using namespace std; int* Foo(int i) { int* x = new int(i); return x; } int main() { int* x = Foo(5); cout << *x; delete x; return 0; }
Память я выделил внутри функции, а освободил в области видимости переменной в которую передал ссылку.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
как работает такой синтаксис? ф-я внутри себя же? еще и 2 раза
еще, посоветуйте хорошую книгу содержательную и не сильно длинную
у меня есть такая
Б. Керниган, Д. Ритчи
Язык программирования Си
Издание 3-е, исправленное