2012-05-22 34 views
0

這是我的結構體;錯誤:v.contents [30]在此函數中未初始化使用

typedef struct _values { 
int contents[MAX_CONTENTS]; 
    ... more ints; 
} values; 

在另一個函數中,我初始化這個特定的數組;

int contents[MAX_CONTENTS] = {0}; 

for (i = 0; i < MAX_CONTENTS; i++) { 
    v.contents[i] = contents[i]; 
} 

而在我的主要我有這個;

values v; 
newValues (v); 

我每次嘗試修改main中的元素時都會收到錯誤;

v.contents[30] = 3; 

這是我得到的唯一的錯誤。我究竟做錯了什麼?

+0

無法重現。請發佈一個重現問題的最小示例。 –

+0

MAX_CONTENTS的值是什麼? – Jay

回答

3

v(和contents它內部的)可通過值獲得通過。你的函數原型改成這樣:

void newValues(values *v); 

變化如何你就打電話給這個:

newValues(&v); 

而不是:

v.contents[i] = /* ... */; 

用途:

v->contents[i] = /* ... */; 
+0

+1我忘了。 –

+0

謝謝,現在來解決分段錯誤... – Sam

2

你可能想複製這樣的:

for (i = 0; i < MAX_CONTENTS; i++) { 
    v.contents[i] = contents[i]; 
} 
+0

對不起,這是我已經。我將重新編輯我的問題。 – Sam

+0

我不知道'重新創建問題'是什麼意思? – Sam

+0

那麼我* *不能*使用您發佈的唯一代碼來獲取錯誤。一切都像魅力一樣編譯。所以錯誤不在您發佈的代碼中。 –

相關問題