【发布时间】:2018-06-27 12:11:21
【问题描述】:
我有一个指针float *ptr,在长度为n的动态分配之后,我想用零或一来初始化这个数组,所以我使用memset(ptr,0,n*sizeof(float))或memset(ptr,1,n*sizeof(float))。这合法吗?因为memset的第二个参数是int型,恐怕不能适用于float型。
【问题讨论】:
-
该参数是将每个字节设置为的值,而不是每个 32 位字。
0x0是浮点数零,但0x01010101不是 1,而是 ~2.3*10**-38 -
那么用 0 值初始化是可以的,而 1 是危险的?
-
不,它们既安全又明确;只是你无法使用 memset 看到浮点数为 1 的数组;接口不支持。