请问pascal中fillchar(f,sizeof(f),$7f)是什么意思
将f数组全部置为0
$7f 是补码,
就像如果要置成-1,应该写成fillchar(f,sizeof(f),255)一样。
pascal fillchar能不能只填一部分
可以的,但填充的是字节
所以fillchar(a, 500, 0)填充的只是a数组的前500/sizeof(integer)个元素
fillchar(a, sizeof(a[0])*n, 0);
请问fillchar(f,sizeof(f),0);是什么意思?所谓的数组清零是怎样的一个过程?
FillChar是一个填充字符的函数
它可以将指定的字符,按照指定的长度填入指定的字符
参数不一定是数组,也可以是指针等
如果你填入的字符是0,那么就变成清空了
如果这个语句出现在Delphi中,它还附带有串行化数据的功能。
delphi fillchar函数
Fillchar是Turbo/Borland Pascal的System单元的一个标准过程,使用格式是:FillChar(var
X; Count: Word; value),功能是,把指定变量X在内存段中所占的低Count个字节赋为相同的值value,
其中value是填充的值,只能是Byte、Char或Boolean等单字节类型的值。
在Free
Pascal中稍加扩展为FillChar(var X; Count: Longint; value), 功能没变。
[例]:Fillchar通常用来给数据赋初值。
var a:array [1..10] of arrtype;
执行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.real sizeof(a)的值为60(每个元素占6个字节,10个元素共占60个字节)
single sizeof(a)的值为40(每个元素占4个字节,10个元素共占40个字节)
double sizeof(a)的值为80(每个元素占8个字节,10个元素共占80个字节)
extended sizeof(a)的值为100(每个元素占10个字节,10个元素共占100个字节)
comp sizeof(a)的值为80(每个元素占8个字节,10个元素共占80个字节)
2.integer(word) sizeof(a)的值为20 (每个元素占2个字节,10个元素共占20个字节)
3.byte (shortint) sizeof(a)的值为10 (每个元素占1个字节,10个元素共占10个字节)
4.longint sizeof(a)的值为40 (每个元素占4个字节,10个元素共占40个字节)
5.boolean sizeof(a)的值为10(每个元素占1个字节,10个元素共占10个字节)
6.char sizeof(a)的值为10 (每个元素占1个字节,10个元素共占10个字节)
所以例的结果是将数组a的所有元素(全部字节)用0来填充,注意对不同类型的数据,对“0”的“解释”是截然不同的!对整型或实型量来
讲,所有字节均为0,则该量也为0;对boolean型量(一个字节)来讲,0表示false(非0数表示true),则该量为false;对char型
量(一个字节)来讲,0表示ASCII码值为0的字符,则该量为#0。