使用memset初始化浮点型数组

时间:2018-06-27 02:27:16

标签: c memset

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

2 个答案:

答案 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是不合理的,因为它将产生一个“垃圾”值(但每次都相同)。