char answer[20];
for (int i = 0; i < sizeof(p) / sizeof(struct Person*); i++)
{
p[i] = malloc(sizeof(struct Person));
}
scanf("%s %d %s %d %s %d %s %d %s %d", p[0]->name, p[0]->age, p[1]->name, p[1]->age, p[2]->name, p[2]->age, p[3]->name, p[3]->age, p[4]->name, p[4]->age);
for (int i = 0; i < 5; i++)
{
int check = 0;
for (int j = 0; j < 5; j++)
{
if (i == j)
{
continue;
}
if (p[i]->age > p[j]->age)
{
check++;
}
}
if (check == 4)
{
strcpy(answer, p[i]->name);
}
}
printf("%s", answer);
// scanf에서 막혔습니다포럼 상단 오른쪽에서 53.7로 검색하면 이전 질문과 답변을 참조할 수 있습니다.
메모리를 동적으로 할당해서 접근하지만,
p[0]->age의 자료형은 int입니다. 따라서 int 정수를 scanf로 입력 받을 때는 &가 필요합니다.
p[0]-> 표기에 현혹되지 말고 p[0]->age가 가리키는 자료형이 그래서 무엇이지? int구나? 그러면 &가 필요하네? 이렇게 생각해야 합니다.
반대로 p[0]->age로 접근하는 자료형이 int *이네? 그러면 &가 필요없네, 이렇게 되는 겁니다. 각각은 다릅니다.
p[0]->age의 자료형은 int입니다. 따라서 int 정수를 scanf로 입력 받을 때는 &가 필요합니다.
p[0]-> 표기에 현혹되지 말고 p[0]->age가 가리키는 자료형이 그래서 무엇이지? int구나? 그러면 &가 필요하네? 이렇게 생각해야 합니다.
반대로 p[0]->age로 접근하는 자료형이 int *이네? 그러면 &가 필요없네, 이렇게 되는 겁니다. 각각은 다릅니다.
이렇게 말씀하셨는데
p[i]->name 에서 &p[i]->name 이렇게 사용하지 않으신 이유가 struct 에 name[30]으로 배열로 만들어서 &를 사용하지 않아도 되는건가요?
제시된 자료 구조를 보면
struct Person {
char name[30];
int age;
};