我们如何在C ++中使用字符串包函数设置数组的内存

How can we set the memory of array using cstring packgae functions in c++

我想使用 cstring 的 memset 函数为整个数组分配一个数字 class.bbut 它只适用于 0,如果我为函数 memset 提供任何其他值,它会随机分配一个大整数 no 到内存数组。

memset(arr,0,sizeof(arr));

为此,它工作正常,数组中的每个槽我都分配了 0 个值; 但如果我这样做

memset(arr,1 or any other no,sizeof(arr));

为此,它为数组的每个槽分配了一个随机的较大整数值; 请解释为什么会这样。

我想你想要 std::fill.

std::memset 是原始函数。它在内存中设置字节,而不是值。二进制的值2570x0101。这向您展示了发生了什么:两个字节都设置为 0x01.

由于您想将值设置为 0x0001,显然无法使用 std::memset 这样做,因为它将所有内容都设置为相同的字节值。 std::fill 另一方面理解类型,并且会转换你给它的值。因此它可以在填充浮点数组时将 1 转换为 1.0f