我想使用cstring类的memset函数为整个数组分配一个数字。但它只适用于0,如果我为函数memset提供任何其他值,它会随机为数组的内存分配一个大整数no。
memset(arr,0,sizeof(arr));
为此,它可以很好地工作,数组i中的每个插槽分配0值;但是如果我做这个
memset(arr,1 or any other no,sizeof(arr));
为此,它向数组的每个槽分配一个随机的较大整数值;请解释为什么会这样。
我想你想要std::fill
。
CCD_ 2是一个基元函数。它在内存中设置字节,而不是值。二进制中的值257
是0x0101
。这向您展示了发生的情况:两个字节都设置为0x01
。
由于要将值设置为0x0001
,因此显然不可能使用std::memset
进行设置,因为它将所有内容都设置为相同的字节值。std::fill
理解类型,并会转换您给它的值。因此,在填充浮点数组时,它可以将1
转换为1.0f
。