zoukankan      html  css  js  c++  java
  • 数组类型

    //数组类型 

    { 数组类型定义了一组指定类型的元素序列,
    在方括号中填入下标值就可访问数组中的元素。
    定义数组时,方括号也用来指定可能的下标值。
    例如,下面的代码中定义了一个有24个整数的数组:
     }

    type
      DayTemperatures = array [1..24] of Integer;
    {
    在数组定义时,你需要在方括号中填入一个子界类型的值,
    或者用两个有序类型的常量定义一个新的子界类型,子界类型指定了数组的有效索引。
    由于子界类型指定了数组下标值的上界和下界,
    那么下标就不必象C、C++、JAVA和其他语言那样必须从零开始。
    由于数组下标基于子界类型,因此Delphi能够对它们进行范围检查。
    不合法的常量子界类型将导致一个编译时间错误;
    如果选上编译器范围检查选项,那么超出范围的下标值将导致一个运行时间错误。
    使用上述数组定义方法,定义一个DayTemperatures 类型的变量如下:
    }


    type
      DayTemperatures = array [1..24] of Integer;
    var 
      DayTemp1: DayTemperatures;

    procedure AssignTemp; 
    begin 
      DayTemp1 [1] := 54;
      DayTemp1 [2] := 52;
      ...
      DayTemp1 [24] := 66;
      DayTemp1 [25] := 67; // compile-time error

    //数组可以是多维的,如下例:

    type
      MonthTemps = array [1..24, 1..31] of Integer;
      YearTemps = array [1..24, 1..31, Jan..Dec] of Integer;

    { 这两个数组建立在相同的核心类型上,
    因此你可用前面定义的数据类型声明它们,如下面代码所示:
     }

    type
      MonthTemps = array [1..31] of DayTemperatures;
      YearTemps = array [Jan..Dec] of MonthTemps;

    { 上例的声明把索引的次序前后调换了一下,但仍允许变量之间整块赋值。
    例如:把一月份的温度值赋给二月份:
     }

    var
      ThisYear: YearTemps;
    begin
      ...
      ThisYear[Feb] := ThisYear[Jan];
    {
    你也能定义下标从零开始的数组,不过这似乎不太合逻辑,
    因为你需要用下标2来访问数组第三项。
    然而,Windows一直沿用了从零开始的数组(因为它是基于C语言的),
    并且Delphi 控件库也在往这方向靠拢。

    使用数组时,你总要用标准函数Low和 High来检测它的边界,Low和 High返回下标的下界和上界。
    强烈建议使用Low和 High操作数组,特别是在循环中,
    因为这样能使代码与数组范围无关,
    如果你改变数组下标的范围声明,Low和High代码不会受影响;
    否则,如果代码中有一个数组下标循环体,那么当数组大小改变时你就不得不更新循环体的代码。
    Low和 High将使你的代码更易于维护、更稳定。

    注意:顺便提一下,使用Low和High不会增加系统运行额外开销。
    因为在编译时,他们已被转换成常数表达式,而不是实际函数调用。
    其他简单的系统函数也是这样。

    Delphi主要以数组属性的形式使用数组。
    我们已经在 TimeNow 例子中看到过数组属性,也就是ListBox控件的Items属性。

    注意:Delphi 4 的Object Pascal中增加了动态数组,
    所谓动态数组是在运行时动态分配内存改变数组大小。
    使用动态数组很容易,不过我认为在这里讨论这类数组不合适。
    你将在第八章看到对Delphi 动态数组的描述。 
    }




  • 相关阅读:
    Leetcode第七题——数的反转
    Leetcode第六题——横向遍历ZIGZAG数组
    26 将查询结果插入到一张表中?
    25 表的复制
    24 insert 语句插入数据
    23 创建表
    22 limit(重点中的重点,以后分页查询全靠它了。)
    21 union(可以将查询结果集相加
    20 子查询
    19 连接查询
  • 原文地址:https://www.cnblogs.com/xe2011/p/2518897.html
Copyright © 2011-2022 走看看