簡體   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