Free Pascal 学习笔记 第三章 数据类型 Types (未完)

第三章 数据类型 Types

一、主要有八种数据类型:

  1. 简单类型 simple tye

  2. 字符类型 string type

  3. 结构化类型 structured type

  4. 指针类型 pointer type

  5. 过程类型 procedural type

  6. 泛型类型 generic type

  7. 专用类型 specialized type

  8. 类型别名 type alias

、基本类型

基本类型分为序数类型与实数类型两大类。

1.序数类型 ordinal types

除浮点类型外,所有基本类型均为序数类型,可分为整数类型、布尔类型、枚举类型、子界类型。

1.1 整数类型 integers

1.2 布尔类型 boolean types

1.3 枚举类型 enumeration types

1.4 子界类型 subrage types


 

2、实数类型

Free Pascal仅支持IEEE浮点类型,使用数学协处理器处理浮点计算。Real类型在本机上可以是Single或是Double类型,取决于本机处理器。

类型

范围

有效位数

字节

Real

依赖平台

???

4 或 8

Single

1.5E-45 .. 3.4E38

7–8

4

Double

5.0E-324 .. 1.7E308

15–16

8

Extended

1.9E-4932 .. 1.1E4932

19–20

10

Comp

-2E64+1 .. 2E63-1

19–20

8

Currency

-922337203685477.5808 .. 922337203685477.5807

19–20

8

  


 

二、字符类型 character types

1.Char类型

一个字符一个字节,包含一个ASCII字符。

Char类型通过将字符括在单引号中来指定字符常量,如’a’ ‘A’

2.WideChar

2个字节大小。包含UTF-16编码的Unicode字符,在UTF-16编码前加#实现。

 

3.其它字符类型

Free Pascal在系统单元中定义了其他一些字符类型,例如UCS2Char,UCS4Char,UniCodeChar。但是这些字符类型仅出于Delphi兼容性而定义。

4.单字节字符串类型 Single-byte String types

4.1 Short String

4.2 Ansistring

4.3 RawByteString

1.RawByteString类型是不带代码页信息(CP_NONE)的AnsiString字符串类型

2.系统和Sysutils单元中的大多数单字节字符串都使用RawByteString类型。

Var:

RawByteString = Type Ansistring(CP_NONE)

4.4 UTF8 字符串

单字节代码页字符串只能存储该代码页中可用的字符,代码页中不存在的字符不能用该字符串表示。

UTF-8中的ASCII字符映射到CP_ACP编码

Var:

UTF8String = Type AnsiString(CP_UTF8)

5. 多字节字符串类型 Multi-byte String types

5.1 UnicodeString

与AnsiString类似:引用计数,以null结束的数组

5.2 WideString

WideString的类型(用来表示在COM应用程序的unicode字符串)与UnidecodeString几乎相同。

6.Pchar : Null terminated strings

PChar被定义为指向Char类型的指针,但允许进行其他操作。

最好将PChar类型理解为C样式的以null终止的字符串的Pascal等效项,即PChar类型的变量是一个指向Char类型的数组的指针,该数组以null字符(#0结束)。

三、结构化数据类型 Structured Types

结构化类型是可以在一个变量中包含多个值的类型。

结构化类型可以嵌套到无限级别。

与Delphi不同,Free Pascal中不是所有的结构化类型都支持关键字Packed。

结构化数据类型有:数组、记录、集合、文件

FPC支持一维数组、多维数组、压缩数组和动态数组

3.1静态数组

数组的范围包含在数组定义中。

访问索引超出声明范围的元素将生成运行时错误(如果启用了范围检查)。

Type 

 RealArray = Array [1..100] of Real; //有效索引在1到100之间,包括1和100。 

以下两种声明等同
Type  

   APoints = array[1..100] of Array[1..3] of Real;
Type  

   APoints = array[1..100,1..3] of Real;有效索引在1到100之间,包括1和100。 

以下两种声明等同
Type  

   APoints = array[1..100] of Array[1..3] of Real;
Type  

   APoints = array[1..100,1..3] of Real;


 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值