我有一个指针float *ptr
,在用长度n
进行动态分配后,我想用零或一初始化这个数组,所以我用memset(ptr,0,n*sizeof(float))
或memset(ptr,1,n*sizeof(float))
。这合法吗?因为memset
的第二个参数是int类型,恐怕不能应用于浮点类型。
memset(ptr,1,n*sizeof(float((.这合法吗?
否,不要将要1.0f
float
的值设置为float
的编码,而不是 Picone1,1,1,1
@James字节
memset(ptr,0,n*sizeof(float))
或更好的memset(ptr, 0, sizeof *ptr * n)
会将每个字节设置为 0。这当然是float
0.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 是不合理的,因为它会产生一个"垃圾"值(但每次都是相同的值(。