易语言吧 关注:266,513贴子:1,664,169
  • 10回复贴,共1

【教学向】易语言变量详解-第四课:变量,数组和自定义数据类型

只看楼主收藏回复

嘛,国际惯例一楼祭度娘
这是最后一课了
本来不想出这么快的...但是因为各种原因就草草的完结了....


IP属地:浙江1楼2014-03-16 10:39回复
    首先,先说说文本型变量

    和字节集不同的是,这次变量指向的地址就是数据地址了,不用再+8了
    不过这样的话有一个问题:易语言又是如何来确定文本在内存中何时结束的呢?
    答案很简单,依靠文本终止符{0}。
    当易语言试图将一个变量地址解释为文本的时候,易语言会遍历这个地址里的字节集,直到遇到 0字节为止。
    如图

    在图中可以看到abc对应的字节集分别是97,98,99
    然后我尝试直接传递这个字节集让易语言转换成文本,结果成功的输出了abc
    然后我在他们中间,也就是a对应的97后面插入了一个文本终止符{0}
    结果到文本转换下来只剩下a...其他的数据丢失了
    这也是我在贴吧再三再三强调的为什么数据加密后不能用到文本存储的原因。
    数据加密后会不会出现{0}根本没有人可以保证,如果出现的话转换到文本...数据丢失...然后尝试转换回去解密...你懂的=w=
    至于说文本变量的相加...请参考字节集变量。文本变量在相加后内存地址也是会变化的。
    文本基本上注意点就是这样了。然后简单说下剩下的几个变量吧
    日期时间型 8字节
    小数型 4字节
    双精度小数型 8字节
    逻辑型 4字节
    子程序指针 4字节
    嘛,剩下的几个变量其实已经没什么好讲的了
    逻辑型特别简单,0=假,非0=真,或者可以当成{0,0,0,0}=假 非0值都是真,比如{1,0,0,0}甚至改成{255,255,255,255},结果都是 真。具体上就不做演示了
    日期时间型...嘛,在各种意义上都是易语言完全自创的一种数据类型....内部到底怎么处理真不知道...求大神反汇编易语言看内部实现方式QAQ
    小数型/双精度小数型....嘛,说真的我依旧不会呢....
    子程序指针...实质上就是一个子程序的内存地址,长度为4,可当作是整数型处理...之前已经说过了...


    IP属地:浙江3楼2014-03-16 10:43
    回复
      我们来讲讲数组吧← ←
      数组其实有两种,一种是传址变量的数组,如字节集,文本型等,一种是无传址变量的数组,如整数型,逻辑型之类的....
      我们先用整数型举例

      嘛,很明显,数组的存储方式就是按照数据的长度。
      如整数型的数组,整数型的数据长度是4字节,所以数组的存储实际上是 4个字节存储一个数字,下一个字节存储第二个成员
      数组成员数的管理实质上是易语言内部管理的。通过设置,其实是可以让易语言不检查引用下标的
      如图

      其实在一些编程语言(如C++),编译器有时候是不检查下标的,比如

      这段代码创建的整数数组a只有三个成员,但是我却尝试输出了第五个成员...事实上编译器完全没有报错并且可以正常运行
      至于原因
      数组的存储实质上就是一个内存地址,里面按照被解释的数据类型来取得内容。比如一段内存被解释成整数型数组,那么就是1~4=第一个成员,5~8=第二个成员,以此类推
      检查数组成员实质上并不是必须的。只是易语言自身提供了数组的检查罢了。
      然后我们来看下文本数组

      图中我想可以看出,当存储的是文本型这种只可以传递内存地址的数据的时候,内存里存储的是内存地址的数组,而非数据的数组
      字节集也是一样的道理。这就是易语言,或者说是大部分编程语言的数组在内存中的存储方式。


      IP属地:浙江4楼2014-03-16 10:46
      回复
        OK,让我们最后讲讲自定义数据类型吧~

        嘛,如你们所见
        实质上自定义数据结构也不过是内存中的一段数据
        当变量需要传值的时候,在内存里成员所对应的内存地址里存储的就是那个变量的内存地址
        否则直接存储数值。
        然而要注意的是,字节型理论上只占用一个字节
        实质上在易语言中被解释成了4字节长度
        嘛,基本上我想讲的就这么多了
        我想,如果有人想要设计一个脚本解释器之类的,使用申请内存()来做各种变量应该有思路了吧(笑)
        这个教程原计划讲很多的,实际上因为各种原因算是草草的完结了
        感兴趣的可以自行尝试←w←
        感谢观看QwQ


        IP属地:浙江5楼2014-03-16 10:47
        收起回复
          已收藏


          IP属地:浙江6楼2014-03-16 10:55
          回复


            IP属地:内蒙古来自Android客户端7楼2014-03-16 10:59
            回复
              围观


              IP属地:湖北来自iPhone客户端9楼2014-03-16 13:21
              回复
                支持了,这教程能让新手明白基本的数据类型和相关解释了


                来自手机贴吧10楼2014-03-16 13:43
                回复
                  嗯,原来是这么回事…
                  我以前


                  来自手机贴吧11楼2014-03-16 14:13
                  回复
                    小学生表示看不懂,是我太笨了么


                    IP属地:广东12楼2014-05-03 01:48
                    回复