繁体   English   中英

使用memset初始化浮点型数组

[英]initialize float-type array using memset

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

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

不,不要将float的值设置为1.0f ,而不是用字节1,1,1,1 @James Picone来编码float


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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM