2017-05-06 76 views
0

我想分配值給一個使用分配內存的結構,我有一些問題!我4個月到編程,很抱歉,如果我正在做一個愚蠢的錯誤,但爲了更好的變量名繼承人的代碼重新編寫,並擺脫所有其他的廢話:C - 分配值給一個malloc結構不起作用

typdef struct mystruct { 
double a, b; 
int c, d;} 
mystruct 


// allocating an array to store a number of a, b, c and d values 
mystruct * pointer = ((mystruct*)malloc((numFileLines * sizeof(mystruct)))); 

i = 0; 
pointer[i].a = 2133; 
pointer[i].b = 3424; .. and so on 

這裏是我的問題..我不認爲這些被儲存。有沒有人看到爲什麼不/我如何將這些值作爲測試打印到控制檯?

i++; 
pointer[i].a = 2133; 
pointer[i].b = 3424; 

這給我的垃圾:(要打印的第2個值)

printf("%lf", pointer[1].b); 

如果有人可以幫助,或者如果亞需要更多的信息對於這個問題,我會刷新此頁面每分鐘! 謝謝!

+0

可能的重複[賦值給結構成員](http://stackoverflow.com/questions/19255964/assigning-values-to-members-of-structures) –

+0

不完全,那個人正試圖複製一個數組到另一個。我只是分配一個值。 – RoboScope

+3

將您的代碼片段粘貼到適當的程序框架後,無法重現。請發佈顯示問題的[Minimal,Complete和Verifiable示例](http://stackoverflow.com/help/mcve)。我正在使用'printf(「%f%f \ n」,指針[1] .a,指針[1] .b);' –

回答

0

我想爲什麼當您嘗試打印pointer[1]值時,您會收到垃圾值。
問題是你正在使用malloc()爲你的指針分配內存,這是一個數組。 malloc()不保證內存分配是連續的。因此,當i = 1時指針[i]不一定指向正確的存儲位置。

所以我會建議使用calloc()而不是malloc()。 calloc()確保內存不會隨機分配。