C - 使用内存集初始化浮点型数组



我有一个指针float *ptr,在用长度n进行动态分配后,我想用零或一初始化这个数组,所以我用memset(ptr,0,n*sizeof(float))memset(ptr,1,n*sizeof(float))。这合法吗?因为memset的第二个参数是int类型,恐怕不能应用于浮点类型。

memset(ptr,1,n*sizeof(float((.这合法吗?

否,不要将要1.0ffloat的值设置为float的编码,而不是 Picone1,1,1,1@James字节


memset(ptr,0,n*sizeof(float))或更好的memset(ptr, 0, sizeof *ptr * n)会将每个字节设置为 0。这当然是float0.0f的编码。

要将float数组的每个元素设置为1.0f或任何值,只需使用循环即可。

float init_value = 1.0f;
for (size_t i = 0; i < n; n++) {
ptr[i] = init_value;
}

将浮点数初始化为全字节零是可以的(它将产生浮点数 0.0(。 但是 all-bytes-1 是不合理的,因为它会产生一个"垃圾"值(但每次都是相同的值(。

最新更新