在函数声明中引用Struct类型?

时间:2016-11-02 09:25:01

标签: c arrays pointers struct

如果我声明一个如下所示的简单结构:

typedef struct {    
  char name[50];    
  int age;    
} Person;    

struct Person people[7];

然后在下面引用它来插入数据:

static void insert(Person people[HOW_MANY], char *name, int age)    
{    
  static int nextfreeplace = 0;    

  people[nextfreeplace].name = &name;    
  people[nextfreeplace].age = age;     

  nextfreeplace += 1;    
}    

我得到了一个不兼容的类型错误:

error: incompatible types when assigning to type 'char[50]' from type 'char **' people[nextfreeplace].name = &name;

我是否声明了我的结构错误?或者我搞砸了我的指针?

1 个答案:

答案 0 :(得分:1)

只需使用

snprintf(people[nextfreeplace].name, 50, "%s", name);

复制字符串。在这种情况下,它还会检查缓冲区大小。