1. 이름 나이 성적값을 가지는 student 구조체

  2. 전체 학생의 성적 평균 구하기

    조건은 다음과 같습니다

    1. 구조체 배열을 사용하여 구현
    2. 구조체 배열을 동적 생성

소스코드

#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;
}

실행결과

Untitled


느낀점

포인터에 대해 잘 아는게 맞나하는 의구심이 제게 들었습니다. 주소연산자와 참조연산자를 매끄럽게 사용하지 못했고, 구글링을 이용해 주소연산자를 활용했습니다. 물론 구글링을 못하는 것보단 낫지만, 구글링을 안 하고 자료구조 과제를 할 줄 알아야한다는 생각이 있었지만요. 언제나 공부해도 자주 헷갈리는 내용이긴 하지만, 포인터에 대해 재복습을 해야겠다는 생각이 많이 들었습니다.