pascal 中,过程fillchar是什么意思?怎么用?

来源:百度知道 编辑:UC知道 时间:2024/07/08 03:05:01
pascal 中,过程fillchar是什么意思?怎么用?
那么请问这个过程的时间效率怎么样?

首先正如上面所说,fillchar是对内存块赋值的函数 而上面引用的就是http://baike.baidu.com/view/830381.html的内容

关于fillchar的时间效率:
fillchar虽然是对内存块进行操作,但是它的时间复杂度(通常说的大欧表示法)也是O(n)的,和循环赋值是一样的
但是因为它是直接对内存操作,在翻译成机器代码的时候会少很多语句,理论上会比循环赋值快一点点(只是常数的差距而已)
根据我自己的感觉,实际应用中,两种方法所用的时间基本相同

Pascal(一种类似C语言的编程语言)的一个内存块赋值函数。
定义: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

P