0

これが私の構造体です。

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);

このようにメインの要素を変更しようとすると、エラーが発生します。

v.contents[30] = 3;

これは私が得ている唯一のエラーです。私は何を間違っていますか?

4

2 に答える 2

3

v(およびcontentsその内部)が値渡しされている可能性があります。関数のプロトタイプを次のように変更します。

void newValues(values *v);

これを呼び出す方法を次のように変更します。

newValues(&v);

そしてむしろ:

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

使用する:

v->contents[i] = /* ... */;
于 2012-05-22T05:46:02.507 に答える
2

おそらく次のようにコピーするつもりです。

for (i = 0; i < MAX_CONTENTS; i++) {
    v.contents[i] = contents[i];
}
于 2012-05-22T05:30:31.453 に答える