看样子你不知道指针的概念,那就不用指针,你直接用 CArrayInt arrary也可以。
看下文档,它有实现增删改查等数据操作方法,分别是Add(),Delete(),Update(),Search().
总的元素个数用Total(),每一个元素获取用At(i)
CArrayInt arrary 对象在栈上,编译器负责对象的内存管理,你不用管。
CArrayInt *pt = new CArrayInt,对象在堆上,对象的内存释放需要代码调用 delete pt。
关键是你不了解指针的概念,说这些你未必懂,你就用第一种方式。
--------
参考在线文档
https://www.mql5.com/en/docs/standardlibrary/datastructures/carrayint
- www.mql5.com
看样子你不知道指针的概念,那就不用指针,你直接用 CArrayInt arrary也可以。
看下文档,它有实现增删改查等数据操作方法,分别是Add(),Delete(),Update(),Search().
总的元素个数用Total(),每一个元素获取用At(i)
CArrayInt arrary 对象在栈上,编译器负责对象的内存管理,你不用管。
CArrayInt *pt = new CArrayInt,对象在堆上,对象的内存释放需要代码调用 delete pt。
关键是你不了解指针的概念,说这些你未必懂,你就用第一种方式。
--------
参考在线文档
https://www.mql5.com/en/docs/standardlibrary/datastructures/carrayint
mql4 在十多年前出来的时候,那时只有 struct,您可能还记得这件事,那时 mql4 的数据类型都封掉了指针,当时 c# java 开始流行,封掉指针是那时新的编程语言的共识,所以也算是正确的方向,只是到了 2014 那年 mt4 大改版,又把 class 补回来了,补回来还多了可以有指针,可能那时 mql5 已经有 class 吧。有了指针,如果不熟悉 c/c++ 的朋友,忘记去 delete,ea 或指标目的都是要挂在图表不下线的,有内存泄漏的可能,是相当麻烦的事。
14 年那次 mt4 大改版,个人是印象最深刻的,除了从 mql5 那里补许多功能过来,还把编译器也大改了,造成当时所有的 ex4 破解器全部失效,呵呵。。。
mql4 在十多年前出来的时候,那时只有 struct,您可能还记得这件事,那时 mql4 的数据类型都封掉了指针,当时 c# java 开始流行,封掉指针是那时新的编程语言的共识,所以也算是正确的方向,只是到了 2014 那年 mt4 大改版,又把 class 补回来了,补回来还多了可以有指针,可能那时 mql5 已经有 class 吧。有了指针,如果不熟悉 c/c++ 的朋友,忘记去 delete,ea 或指标目的都是要挂在图表不下线的,有内存泄漏的可能,是相当麻烦的事。
14 年那次 mt4 大改版,个人是印象最深刻的,除了从 mql5 那里补许多功能过来,还把编译器也大改了,造成当时所有的 ex4 破解器全部失效,呵呵。。。
你也是老前辈了。
我07年接触是MQL4时是没有struct的,到09年都没有,好像到了2013年为了跟MQL5兼容才有了struct。
2014年2月份为了与MQL5完全兼容了, 做了一次大升级,版本 Build 600,编译器都是同一套,可惜2年前(如果没有记错的话)又分开了。
Build 600之后,那些反编译器确实都被歼灭了,那个反编译器的存在确实打击不少开发者热情。
看样子你不知道指针的概念,那就不用指针,你直接用 CArrayInt arrary也可以。
看下文档,它有实现增删改查等数据操作方法,分别是Add(),Delete(),Update(),Search().
总的元素个数用Total(),每一个元素获取用At(i)
CArrayInt arrary 对象在栈上,编译器负责对象的内存管理,你不用管。
CArrayInt *pt = new CArrayInt,对象在堆上,对象的内存释放需要代码调用 delete pt。
关键是你不了解指针的概念,说这些你未必懂,你就用第一种方式。
--------
参考在线文档
https://www.mql5.com/en/docs/standardlibrary/datastructures/carrayint
谢谢大佬。这个 CArrayInt怎么遍历啊? 有示例吗?
CArrayInt 这个标准库怎么新建对象,怎么遍历,怎么打印。。。。新手求助
CArrayInt *array=new CArrayInt;
为什么新建对象的时候带 *。不带* 就报错。。。。