如果我有这些结构:
struct rec {
int key;
double value;
};
struct node {
struct rec record;
struct node *next;
};
我必须将项目struct rec *r
的字段值复制到项目struct node *n
中,
n->record.key = r->key;
n->record.value = r->value;
答案 0 :(得分:5)
是的,您可以一次复制struct
个字段。你也可以一次性完成:
struct rec *r = ...;
struct node *n = ...;
n->record = *r; // Copies the content of "r" into n->record
这样做的好处是每次修改struct rec
的结构时都不必重新访问复制代码。
答案 1 :(得分:2)
由于rec
结构仅包含基本类型的字段,因此完全有效且合理:
n->record = *r;
在这种情况下,相当于分别复制key
和value
字段:
n->record.key = r->key;
n->record.value = r->value;
答案 2 :(得分:-1)
n->rec.key = r->key;
n->rec.value = r->value;
是正确的,但更好的是:
memcpy(&n->rec, r, sizeof n->rec);
现在,您可以使用新字段扩展struct rec,而无需更改现有代码