C-结构内的结构

时间:2013-09-04 16:08:39

标签: c structure

如果我有这些结构:

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;

3 个答案:

答案 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;

在这种情况下,相当于分别复制keyvalue字段:

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,而无需更改现有代码