fillchar() 在pascal 中的应用
fillchar(arr,y,x):将数组arr所占用的内存y个字节用x填充。
通常与sizeof()函数连用。
sizeof()返回数组所占的字节总数。
fillchar(arr,sizeof(a),x):即可填充数组所在的全部内存块。
可以将该数组所对应的字节每个字节都填充成X,达到集体赋值的效果。
例如var a:array[1..100000,1..100000] of byte;
如果要将本数组全部赋为1的话for循环需要10^10次,而fillchar(a,sizeof(a),1):就能瞬间赋值完。
将每个字节变成00000001,也就是数字1。
注意如果有的变量占用了多个字节的话比如longint,int64类型,fillchar(a,sizeof(a),1):就会将每个字节都赋值为1,就变成了00000001 00000001也就是257
Pascal语言中fillword和fillchar有区别吗
有区别。
fillchar,fillword,filldword,fillbyte用途举例
fillchar 是按照字节填充
fillword ,filldword是按照需要长度的字节来填充
fillchar:
数组清0 fillchar(a,sizeof(a),0);
数组赋值-1 fillchar(a,sizeof(a),$FF);
fillbyte:
通常用fillbyte来给元素类型为byte的数组赋初值。
数组赋值255 fillbyte(a,sizeof(a),255);
注:a数组为byte类型
fillword:
和fillbyte相仿.
但每次赋的是一个值为Value的双字节无符号整数(word类型),所以每2个字节赋一次值,而fillbyte是每一个字节就赋一次值。
数组赋值32767 fillword(a,sizeof(a) div 2,32767);
注:div 2不能漏
filldword:
与fillbyte相仿。
Dword意思是占用4个字节的整型,具体来讲可以是常用的longint类型。
数组赋值maxlongint filldword(a,sizeof(a) div 4,2147483647)。
函数fillchar有功能和作用?WORRY!!!
Pascal的一个内存块赋值函数。
定义:Procedure FillChar ( Var X; Count : Longint; Value : Char or Byte);
意为:对一个Char类型的数组X进行Count次赋值,当Value为Char类型时,直接赋值;若Value为Byte类型时,将Value作为AscII赋值给每个单元。
被引申为:对一个内存块,每8个二进制位赋值Value,赋值Count次,长度为:Count*8个二进制位。
FillChar是一种很常用的函数,大部分赋值都是用FillChar完成的,因为对内存的块赋值,比使用循环要快得多。
根据引申意,我们举个例子:
首先定义:
Var
a : array[1..10000] of arrtype;
当arrtype为integer时:
FillChar(a,sizeof(a),0); //效果是:将数组清空,所有元素赋值为0
FillChar(a,sizeof(a),1); //效果是:将数组每一个元素都赋值为257,解释如下:Integer占16个二进制,使用FillChar后,每一个字节被赋值为1,所以每一个元素的二进制为:0000000100000001,即257
pascal中怎么样用fillchar函数来给数组赋一个很大的值,如1000,maxint,maxlongint
我就不说原理了,直接切入主题。
根据你定义的类型不同,格式也不同。
即shortint,byte->fillchar(a,sizoef(a),数值)
integer,word->fillword(a,sizoef(a) div 2,数值)
longint,longword->filldword(a,sizeof(a) div 4,数值)
数值就是你要赋值的数
Free Pascal中 fillchar 和 sizeof是什么意思?
fillchar是字符填充用的,如FillChar(P, SizeOf(P), 0);
是以0去填充p这个数组,而sizeof则是求数组的长度,因此,当0变为1时,则以1去填充p这个数组,数组中的所有元素会被副值为1
详见: /z/q783012290.htm