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