2016-03-10 51 views
-1

初始化它,我知道這個問題很簡單,但即使在網絡上經過長時間的搜尋後,我無法找到一個解決我的問題。我想了解在C動態數組,特別是,分配與的malloc()和初始化用memset的(),所以這裏是我的代碼:Ç分配雙打的動態數組與memset的

#include <stdlib.h> 

int main() 
{ 
    double *d; 
    int numElements = 3; 
    size_t size = numElements * sizeof(double); 
    d = malloc(size); 
    memset(d,1.0,size); 

    int i; 
    for(i=0; i < numElements; i++) 
    printf("%f\n",d[i]); 

    return 0; 
} 

但輸出我得到的是不同於我所期望的

0.0 
0.0 
0.0 

請問,有人能這麼溫柔地向我解釋我做錯了什麼嗎?

謝謝!

+2

注意:他們說,[你不應該投的malloc'()的結果在'C](http://stackoverflow.com/questions/605845/do-i-cast-the-result-of-malloc)。 – MikeCAT

+0

@MikeCAT如果我不投的malloc()的結果我得到了相同的結果 –

+1

其中應說明你的轉換是完全沒有意義的,這就是爲什麼你不應該使用它 - 它只是增加了混亂。 – Lundin

回答

0

因爲memset的工作與字節

的sizeof(雙)== 8, 所以每個雙陣列中充滿了價值0x0101010101010101

只是更換memset的:

for (int i=0;i< numElements;i++) d[i]=1; 
+0

OK ......謝謝! –