Я изучаю C в одном из моих классов. В одной из моих лабораторий нам нужно использовать массив структур.Почему указатель на указатель может вести себя как массив?
Один из моей лаборатории Тас сказал мне, что я должен использовать массив как это:
typedef struct person {
int age;
char *name;
} Person;
int main() {
Person **people = (Person **)malloc(sizeof(Person *));
Person *personA = (Person *)malloc(sizeof(Person));
personA->age = 18;
personA->name = "LeBron James";
Person *personB = (Person *)malloc(sizeof(Person));
personB->age = 20;
personB->name = "Kobe Bryant";
Person *personC = (Person *)malloc(sizeof(Person));
personC->age = 21;
personC->name = "Michael Jordan";
people[0] = personA;
people[1] = personB;
people[2] = personC;
printf("Name of first person is %s \n", people[0]->name);
printf("Name of second person is %s \n", people[1]->name);
printf("Name of second person is %s \n", people[2]->name);
Результат прав. Но что я не понимаю, почему указатель на указатель (people
) может вести себя как массив? (например, people[0] = personA
)
Может кто-нибудь, пожалуйста, объясните это мне?
Этот код является полностью неправильным. Не слушайте эту ТА. – SLaks
@Slaks, это не правильный способ сделать это, но это не совсем неправильно .. – UldisK
Указатель на указатель ведет себя как массив строк –