来自:查字典高考网 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,所以,填充后为:
高字节
低字节
【信息学联赛辅导:Fillchar过程全解】相关文章:
[标签:竞赛联赛,学习方法]
衍声高考琴行2019高本硕学生暑假音乐会 张俊瀚《陕北民歌主题变奏曲》《阿根廷舞曲》第三乐章
2019全国高考志愿填报攻略 第50集 天津市高考历史三年本科录取排名
爆笑班主任 第一季 第220集 高考前最后一只视频,山东王老师揭秘高考的秘密
优秀!英语数学双满分,广西“最牛”高考状元730分刷新最高纪录
葛军大爷怒了:高考我出了个小学数学送分题,你们跟我说不会做?
创艺第二届:2019届高考录取表彰大会暨“核桃音乐节”合影——你只管努力,剩下的交给创艺
探秘历史 第二季 第479集 河南叛逆高考生,写下8000字批判作文,现状如何?