我有一个指针float *ptr
,在动态分配了长度n
后,我想用零或一来初始化该数组,所以我使用memset(ptr,0,n*sizeof(float))
或memset(ptr,1,n*sizeof(float))
。这合法吗?由于memset
的第二个参数是int类型,因此恐怕它不能应用于float类型。
答案 0 :(得分:2)
内存集(ptr,1,n * sizeof(float))。这合法吗?
否,不是将float
的值设置为1.0f
而不是字节float
@James Picone
1,1,1,1
或更好的memset(ptr,0,n*sizeof(float))
会将每个字节设置为0。这肯定是memset(ptr, 0, sizeof *ptr * n)
float
的编码。
要将0.0f
数组的每个元素设置为float
或任何值,只需使用循环即可。
1.0f
答案 1 :(得分:1)
将浮点数初始化为全字节-零是可以的(它将产生浮点数0.0)。但是all-bytes-1是不合理的,因为它将产生一个“垃圾”值(但每次都相同)。