背景
今天打代码,用了一次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的区别如何,这里先填个坑