[英]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.