使用memcpy复制结构

时间:2011-02-09 11:29:15

标签: c

  

可能重复:
  copying one structure to another
  Copying one structure to another

       struct node
        {
           int n; 
           struct classifier keys[M-1];
           struct node *p[M];
        }*root=NULL;

我创建了newnode,类型为node

        (*newnode)->keys[i]

我想将数据从结构clsf_ptr复制到键结构,结构也是同一类型 我可以这样做,我不想初始化每个成员函数

       memcpy((*newnode)->keys[i], clsf_ptr) 

1 个答案:

答案 0 :(得分:3)

首先,应该是:

memcpy(&(newnode->keys[i]), &clsf_ptr, sizeof(struct classifier));

(假设newnode是指向node的指针,而clsf_ptr是分类符。)

此外,结构分配在C中是合法的,因此您可以这样做:

newnode->keys[i] = clsf_ptr;

请注意,这两种方法都只执行shallow copy。因此,如果struct classifier具有指向内存的指针,则会复制指针本身,而不是创建内存的新副本。