배열의 크기 입력 (Java와 C언어 차이)

장다희·2024년 9월 15일

[Java]

package array;
import java.util.Scanner;
public class Array2 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("입력 받을 숫자의 개수: ");
        int num = scanner.nextInt();

        int[] arr = new int[num];
        int total = 0;

        System.out.println(num + "개의 정수를 입력하세요:");
        for (int i = 0; i < num; i++) {
            arr[i] = scanner.nextInt();
            total += arr[i];
        }
        System.out.println("총합: " + total);
    }
}

c언어에서는 Java에서와 달리 배열의 크기를 사용자가 입력한 크기로 설정할 수 없다. 하지만, 아래와 같이 동적 할당을 사용하면 사용자가 입력한 크기에 따라 배열을 만들 수 있다.
(C99 표준 이후로는 동적 메모리 할당을 사용하지 않고도 변동 크기 배열(VLA, Variable Length Array)을 사용할 수 있게 되었다고 한다.)

[C언어]

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>  // 동적 메모리 할당을 위해 필요

int main() {
    int num, total = 0;

    // 사용자로부터 입력받기
    printf("입력 받을 숫자의 개수: ");
    scanf("%d", &num);

    // 동적으로 배열 크기를 할당
    int* arr = (int*)malloc(num * sizeof(int));
    if (arr == NULL) {
        printf("메모리 할당 실패\n");
        return 1;  // 메모리 할당 실패 시 프로그램 종료
    }

    printf("%d개의 정수를 입력하세요:\n", num);
    for (int i = 0; i < num; i++) {
        scanf("%d", &arr[i]);
        total += arr[i];
    }

    printf("총합: %d\n", total);

    // 할당된 메모리 해제
    free(arr);

    return 0;
}

0개의 댓글