이름 나이 성적값을 가지는 student 구조체
전체 학생의 성적 평균 구하기
조건은 다음과 같습니다
#include <stdio.h>
#include <stdlib.h>
// 구조체 선언
struct Student {
char name[3];
int age;
float score;
};
float get_avg(struct Student *students) {
float result = 0;
for(int i=0; i<3; i++) {
// 주소값 통해서 스코어 뽑아내서 합산
result += (students + i)->score;
}
// 인원수만큼 나눠줘서 값 얻기
result /= 3;
return result;
}
int main(void) {
// 구조체 배열 생성 후 메모리 동적 할당
struct Student *students = (struct Student*)malloc(sizeof(struct Student) * 3);
// 평균 성적 초기화
float avg_score = 0;
// 메모리 할당
for(int i=0; i<3; i++) {
// 각 학생 정보 동적 할당
scanf("%s %d %f", students[i].name, &students[i].age, &students[i].score);
}
// 평균 점수 출력
printf("평균 성적 : %.2f\\n", get_avg(students));
// 동적 메모리 할당 해제
free(students);
return 0;
}
포인터에 대해 잘 아는게 맞나하는 의구심이 제게 들었습니다. 주소연산자와 참조연산자를 매끄럽게 사용하지 못했고, 구글링을 이용해 주소연산자를 활용했습니다. 물론 구글링을 못하는 것보단 낫지만, 구글링을 안 하고 자료구조 과제를 할 줄 알아야한다는 생각이 있었지만요. 언제나 공부해도 자주 헷갈리는 내용이긴 하지만, 포인터에 대해 재복습을 해야겠다는 생각이 많이 들었습니다.