zoukankan      html  css  js  c++  java
  • Object Pascal数据类型全家福

    根据Delphi在线帮助,绘制了如下的全家福,所有数据类型都按照各自的辈分站好了位置。

    0051

    1、Ordinal有序类型

    Object Pascal将OrdinalReal归类于Simple(简单)旗下。

    Integer基本类型是IntegerCardinal,它们都是32位的,操作系统和CPU可以花费最少的时间处理它们。

    Character基本类型是CharAnsiCharChar是等同的,都是用来处理8位字符(单字节字符),而WideChar用来处理多字节字符(Delphi7实现为16位,即2个字节)。

    Boolean基本类型是Boolean,另外三种都是为了兼容而定义的。BooleanByteBool都是占用1个字节,而WordBoolLongBool分别占据2个字节和4个字节。

    Enumerated枚举类型定义一系列有序值的集合,集合中的元素一般从0开始连续索引。

    Subrange子界类型也是定义了一系列有序值的集合,但是子界的有序值必须是在别的有序类型中定义过的。子界中有序值的索引被基类确定。

    2、Real实数类型

    Real属于Simple大类,但是因为无理数的介入,使得Real不在能够有序,比如1.0和1.2之间可以取无限个数,因此1.15的确定顺序就不存在了。

    Real的基本类型是Real,在Delphi7中Real等同于Double,因此建议用DoubleSingle来声明变量,而在过程或函数中需要定义可以传递任意实数的参数时,常使用Extended,因为它的取值范围最大,可以兼容其他所有实数类型。

    3、String字符串类型

    String类型分为ShortString、AnsiString/LongString、WideString三大类,ShortString在内存中占0..255字节,其中第0字节存储字符串的实际长度,因此一个ShortString类型的变量最多存储255个字符。

    AnsiString/LongString/WideString的内存都是动态分配的,最大可至2GB,因此可以近似认为它们是无限长的。AnsiString包含的字符使用单字节存储的,而WideString包含的字符则是用多个字节存储的。在Delphi7中WideString被实现为用2个字节存储一个字符。

    PChar并不是Pascal的标准类型,而是为了与操作系统和其他语言兼容而设置的,PChar声明一个以空字符(NULL字符)结尾的字符串指针,更准确的说,这个字符串的字符是Char类型,也就是PChar指向一个Char串。

    4、Structured构造类型

    Structured类型可以包含多个元素或字段,因而这种类型的变量能够容纳多个值。

    Set类型的基本类型可以是EnumeratedSubrange,因此Set变量容纳的实际上是有序值。

    Array数组类型包含两种性质,静态数组和动态数组。

    Record记录类型,是多个任意元素的集合,其中的元素可以称为记录的字段。

    File文件类型用来读写文本,在面向对象编程中,一般使用TFileStream类和一些类的(TStrings、TPicture、TBlobField、TTreeView等)的LoadFromFile、SaveToFile方法来操作文件。

    构造类型中还包括Class(类)、Interface(接口)、Class reference(类引用)三种子类型。

    5、Pointer指针类型

    Pointer指针类型,一个指针占用4字节空间,一个指针就是一个4字节大小的内存块,该内存块的4字节空间用来存储另一块内存区所在的地址,这另一块内存区才是存储实际数据的地方。指针分为无类型指针(Untyped Pointer)和有类型指针(Typed Pointer)。

    Procedural过称类型,一种比较特殊的类型,这种类型变量可以存取一个过程或函数。

    6、Variant可变类型

    可以存储绝大部分不同类型的数据。

    Tip

    在程序编写过程中,要尽量可能选择简单、轻量级、易懂的数据类型,而非实际需要,不要使用复杂的数据类型或者自定义类型,最简单的才是最美丽的。

  • 相关阅读:
    【机器学习】关于判别模型和生成模型
    Delphi新手跟我学写CALL,附完整原程序
    QT事件研究的文章
    杂烩:QWidget、QGraphics、QtQuick
    Golang全接触
    学会使用git
    代码创建 WPF 旋转动画
    值得推荐的C/C++框架和库 very good
    可恶的QT隐式共享
    Notes on OpenSSL and Qt(ssl.pri,qsslocket_openssl_symbols.cpp)
  • 原文地址:https://www.cnblogs.com/pchmonster/p/2303427.html
Copyright © 2011-2022 走看看