有关pascal的填充语句小技巧

背景

今天打代码,用了一次fillchar(a,sizeof(a),1);
结果a数组(of longint)所赋的值却不是1

探索

···pascal
program fillchartest;
var f:array[1..100]of Longint;
begin
fillchar(f,sizeof(f),1);
writeln(f[1]);
end.
···
以上一段代码,输出结果为

16843009

转换为2进制,发现其结果为0000 0001 0000 0001 0000 0001 0000 0001
那么,fillchar的用法到底如何?

显然,fillchar的赋值方式,是一段空间中,八位八位地重复赋值

扩展

其实还有一些语句,有着不同的用途

fillword

赋的值是双字节整数
如:fillchar(a,sizeof(a) div 2,32767)

filldword

所赋值是四字节的
如:filldword(a,sizeof(a) div 4,2147483647)

fillbyte

给元素类型为byte的数组赋值
至于fillbyte和fillchar的区别如何,这里先填个坑

原文地址:https://www.cnblogs.com/Chuckqgz/p/5370937.html