使用memcpy

时间:2015-06-01 17:47:14

标签: c struct malloc memcpy

我想将包含2个结构的动态数组的内容复制到另一个相同大小的动态数组中。

我需要一份精确的副本。当我编译时,我在最后一行得到这两个错误:

  

无效使用未定义类型'struct student'& 取消引用指向不完整类型的指针

我不明白这2个错误。

这是我的代码:

#include "stdio.h"
#include "stdlib.h"
#include "string.h"
struct Movie{
    char name [7];
    int price;
    int year;
};

int main(int argc, char ** argv){

     struct Movie m1,m2;
     strcpy(m1.name,"Rambo");
     m1.price=20;
     m1.year=1980;

     strcpy(m2.name,"universal soldier");
     m2.price=30;
     m2.year=1990;

     struct Movie * db= malloc(2*sizeof(struct Movie));
     *db=m1;
     *(db+1)=m2;

     int i;
     for(i=0;i<2;i++){
         printf("%s\n",(*(db+i)).name);
     }

     struct student * db_copy= malloc(2*sizeof(struct Movie));
     memcpy(&db_copy,&db,sizeof(db));
     for(i=0;i<2;i++){
         printf("%s\n",(*(db_copy+i)).name); //here occur the two errors
     }
}   

1 个答案:

答案 0 :(得分:0)

您需要让编译器知道struct student是什么,并且代码中没有任何内容。

错误意味着:

  1. 无效使用未定义类型'struct student':您正在使用未定义类型
  2. 取消引用指向不完整类型的指针:由于缺少类型的定义,您需要解除引用(访问实际值/结构)的不完整类型。
  3. 我想真正的问题是你打算写:

    struct Movie * db_copy= malloc(2*sizeof(struct Movie));