信息学联赛辅导:Fillchar过程全解_信息学联赛辅导_高中频道-查字典高考网
 
请输入您要查询的关键词

信息学联赛辅导:Fillchar过程全解

发布时间: 2009-11-12   来源:查字典高考网

PDFversionofthisdocument

Fillchar是Turbo/BorlandPascal的System单元的一个标准过程,它的使用格式是:FillChar(varCount:Value),它的功能是,把指定变量X在内存段中所占的低Count个字节赋为相同的值Value,其中Value是填充的值,只能是Byte、Char或Boolean等单字节类型的值。在FreePascal中稍加扩展为FillChar(varCount:Longint;Value),功能没变。

[例1]:Fillchar通常用来给数据赋初值。

vara:array[1..10]ofarrtype;

执行fillchar(a,sizeof(a),0);

当arrtype为

1.real(其他实数类型差不多)使得a中的元素全部成为0.0

2.integer(byte,word,longint,shortint都相同)全部为0

3.boolean全部为false

4.char全部为#0

这里使用了函数sizeof(a),其功能是返回变量a所占的总字节数,如上例返回:

当arrtype为

1.realsizeof(a)的值为60(每个元素占6个字节,10个元素共占60个字节)

singlesizeof(a)的值为40(每个元素占4个字节,10个元素共占40个字节)

doublesizeof(a)的值为80(每个元素占8个字节,10个元素共占80个字节)

extendedsizeof(a)的值为100(每个元素占10个字节,10个元素共占100个字节)

compsizeof(a)的值为80(每个元素占8个字节,10个元素共占80个字节)

2.integer(word)sizeof(a)的值为20(每个元素占2个字节,10个元素共占20个字节)

3.byte(shortint)sizeof(a)的值为10(每个元素占1个字节,10个元素共占10个字节)

4.longintsizeof(a)的值为40(每个元素占4个字节,10个元素共占40个字节)

5.booleansizeof(a)的值为10(每个元素占1个字节,10个元素共占10个字节)

6.charsizeof(a)的值为10(每个元素占1个字节,10个元素共占10个字节)

所以例1的结果就是将数组a的所有元素(全部字节)用0来填充,要注意对不同类型的数据而言,对0的解释是截然不同的!对整型或实型量来讲,所有字节均为0,则该量也为0;对boolean型量(一个字节)来讲,0表示false(非0数表示true),则该量为false;对char型量(一个字节)来讲,0表示ASCII码值为0的字符,则该量为#0。

[例2]:将上例中的fillchar(a,sizeof(a),0)改为fillchar(a,sizeof(a),1),结果如何呢?

执行fillchar(a,size(a),1);

当arrtype为

1.boolean全部为true(1是非0值,表示true)

2.char全部为#1

3.byte,shortint每个元素是1字节量,全部为1

4.integer,word每个元素是2字节量,全部为(257)10。这是因为

在一个integer或word型变量中,它的高、低两个字节均用1来填充(将10进制数1转化为二进制数00000001),结果为:

高字节

低字节

15

14

13

12

11

10

9

8

7

6

5

4

3

2

1

0

0

0

0

0

0

0

1

0

0

0

0

0

0

0

显然,得到的量就是(257)10=(0000000100000001)2。

如果,执行的是fillchar(a,size(a),171),结果又是怎样的?

因为(171)10=(10101011)2,所以,填充后为:

高字节

低字节

查看全部
推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
大家都在看