这是我的结构;
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 :(得分: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];
}