본문 바로가기
개념/혼자 공부하는 C언어

chapter 16) 동적 할당 영역을 배열처럼 사용

by kiseno 2024. 9. 21.
728x90
반응형
SMALL
#include <stdio.h>
#include <stdlib.h>

int main(void){
    int *pi;
    int i, sum = 0;

    pi = (int *)malloc(sizeof(int));
    if (pi ==NULL){
        printf("not enough memory\n");
        exit(1);
    }
    for(i = 0; i<5; i++){
        scanf("%d", &pi[i]);
        sum += pi[i];
    }
    printf("average five people age : %.1lf\n", (sum / 5.0));
    free(pi);

    return 0;
}

 

### 코드의 주요 부분 설명

1. **동적 메모리 할당**:
    - `int *pi;`는 정수형 포인터 `pi`를 선언합니다.
    - `pi = (int *)malloc(5 * sizeof(int));`를 통해 5개의 정수를 저장할 수 있는 메모리 공간을 할당합니다. 만약 메모리 할당에 실패하면, 프로그램은 메모리 부족 메시지를 출력하고 종료합니다.

2. **사용자 입력 받기**:
    - 사용자로부터 5개의 정수를 입력받습니다. 각 입력은 동적으로 할당된 배열에 저장됩니다.
    - 입력받은 각 정수는 `sum`에 더해집니다.

3. **평균 계산 및 출력**:
    - 입력받은 정수들의 합을 이용해 평균을 계산합니다. 평균은 합계를 정수의 개수로 나눈 값이며, 이 경우 `sum / 5.0`을 통해 계산됩니다.
    - 계산된 평균은 소수점 첫째 자리까지 출력됩니다.

4. **메모리 해제**:
    - 프로그램의 마지막에 `free(pi);`를 호출하여 할당된 메모리를 해제합니다. 동적 메모리 할당 후에는 반드시 메모리를 해제해야 메모리 누수를 방지할 수 있습니다.

728x90
반응형
LIST