错误:v.contents [30]在此函数中未初始化

时间:2012-05-22 05:28:52

标签: c

这是我的结构;

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;

这是我遇到的唯一错误。我究竟做错了什么?

2 个答案:

答案 0 :(得分:3)

v(及其内部的contents)可能会按值传递。将函数的原型更改为:

void newValues(values *v);

更改您对此的调用方式:

newValues(&v);

而不是:

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

使用:

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

答案 1 :(得分:2)

您可能打算像这样复制:

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