用指针复制数据结构

时间:2018-10-03 23:24:39

标签: c pointers struct sizeof

我正在尝试复制包含指针和整数的数据结构。但是我不确定这样做是否正确。

这是我的结构:

struct sample_t {
    int x; 
    void *y;   
};

这是我的功能:

struct sample_t *dup(struct sample_t *sample){

  struct sample_t *dup_sample = malloc(sizeof (sample));

  dup_sample->x = sample->x;

  dup_sample->y     = malloc(sizeof(sample->y));
  dup_sample->y     = sample->y

  return dup_sample;
}

1 个答案:

答案 0 :(得分:2)

此代码将指向sample的结构的内容复制到新分配的结构:

struct sample_t *dup(struct sample_t *sample) {
    struct sample_t *dup_sample = malloc(sizeof *sample);
    *dup_sample = *sample;
    return dup_sample;
}

请注意,您分配的内存必须具有足够的数据空间,并且必须具有*sample(结构)的大小,而不是sample(地址)的大小。

对于副本,仅凭struct1 = struct2就足够了。