У меня есть следующие структуры, как, например:Как назначить массив указателю в структуре?
#define MAX_PEOPLE 16
typedef struct {
int age;
}Person;
typedef struct {
Person *people;
int numPeople;
}Team;
Я пытаюсь выделить массив лиц в функции, передаются параметрами. Мой Team
должен хранить массив из 16 указателей Person
. Я не могу понять, что я делаю неправильно.
void initiateTeam(Team * team){
team->numPeople = MAX_PEOPLE;
Person *p[MAX_PEOPLE];
for(int i=0; i<MAX_PEOPLE;i++){
p[i] = malloc(sizeof(Person);
}
team->people = &p[0];
}
Я распечатал адреса моего team->people[i]
, и я получаю случайный мусор. Почему оценка team->people = &p[0]
не так? Не следует ли получить первый адрес моего массива, затем выполнить арифметику указателя?
Для чего вам нужно изменить свой malloc как sizeOf (Person) – LeatherFace
Как вы используете этот массив? Вы выделили место для указателей, а не структур –
О да! Понимаю, почему для массива нам нужен размер, который у людей не размер, указатель – lzc