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

每当我尝试像这样修改 main 中的元素时,我都会收到错误消息;

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 回答