zoukankan      html  css  js  c++  java
  • MQL4编程—值传递和引用传递

    定义

    简单的说就是给一个变量或者对象取一个别名(引用和被引用的共享存储单元,要用修饰符&)。

    引用的用法

    在MQL4中通过调试只接受引用作为函数参数的用法,在函数参数传递过程中,有两种传递方式。

    按值传递

    实参和形参都要分配内存空间,在传递过程中实参拷贝一份数据到函数形参中进行运算。

    int  a(int c)  //定义函数a,int c是形式参数
    
    {
    
    int e;
    
    e=c++;
    
    return(e);
    
    }
    

    主函数:

    void OnStart()
    
    {
    
    int b=5;   //实际参数
    
    Print("函数接受实参值传递给形参:",a(b));
    
    Print("实参是否变动:",b);
    
    }
    

    作为值传递的过程中,函数获取的参数值只是实参拷贝的一个副本,实参本身不参加运算,b依旧是5,没有发生改变,函数获取实参进行自加后结果是6。

    作为函数参数传递引用

    在这种情况下形参被看成是实参的别名,形参就是实参,两者公用内存空间,这大大降低了内存使用,而且使用的是变量名,整体更高效,更直观。

    int  a(int &c)  //定义函数a,int &c是形式参数
    
    {
    
    int e;
    
    e=c++;
    
    return(e);
    
    }
    

    主函数:

    void OnStart()
    
    {
    
    int b=5;   //实际参数
    
    Print("函数接受实参值传递给形参:",a(b));
    
    Print("实参是否变动:",b);
    
    }
    

    传递引用的过程中,改变形参其实就是改变实参,函数形参获取实参进行自加后结果是6,实参5也变成了6,达到了双向传递的功能。

    总结

    引用可以大大降低内存使用,速度更快,而且在MQL4的类设计中,函数参数中的所有对象都必须通过引用传递,在数据类型中的目标指针也要涉及到引用的问题,所以提前做一个铺垫。

  • 相关阅读:
    [C#] 走进异步编程的世界
    [C#] C# 知识回顾
    [C#] 走进异步编程的世界
    [C#] 走进异步编程的世界
    [.Net] 手把手带你将自己打造的类库丢到 NuGet 上
    [.NET] WebApi 生成帮助文档及顺便自动创建简单的测试工具
    [C#] Linq To Objects
    [C#] Linq To Objects
    T-SQL:毕业生出门需知系列(九)
    TortoiseGit:记住用户名和密码
  • 原文地址:https://www.cnblogs.com/eternityz/p/12269828.html
Copyright © 2011-2022 走看看