如果我需要用一个值填充一个数组,是否有一个典型的Forth字可以做一些类似于C中的memset
的事情(即将字节区域设置为特定值(?
在Forth标准中,初始化原始内存的单词是ERASE
,它在Core Extensions单词集中:
ERASE
(addru--(
如果u大于零,则清除从address开始的每个u-连续地址单元中的所有位。
ERASE
,顾名思义,只清除/归零内存。
核心字集中还有FILL
,用于设置连续字符:
FILL
(c-addruchar--(
如果u大于零,则将char存储在从c-addr开始的存储器的每个u-连续字符中。
但是,标准不要求字符大小为一个地址单位。
如果您只想将地址单位范围设置为零以外的值,那么这实际上不是一个可移植或符合标准的操作,所以如果您的地址单位与字符大小相同(就像大多数Forths中一样(,请使用FILL
。
该标准还在字符串字集中提供BLANK
,用于将字符串设置为空格:
BLANK
(c-addru--(
如果u大于零,则将空格的字符值存储在u-addr开始的连续字符位置中。