Если я объявляю простую структуру, как показано ниже:Ссылаясь на типы 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;
Я объявлял свою структуру неправильной? Или я перепутал свои указатели?
Посмотрите на [strncpy] (https://linux.die.net/man/3/strncpy) – LPs
@LPs Вероятно, вы имеете в виду 'strcpy'. 'strncpy' следует избегать, см. [this] (http://stackoverflow.com/questions/2114896/why-are-strlcpy-and-strlcat-consideredinsecure) и [это] (https: //randomascii.wordpress .com/2013/04/03/stop-using-strncpy-already /) и т. д. и т. д. – Lundin