C언어 배열 완벽 이해: 1차원·2차원 배열과 활용 예제 총정리

C언어 배열

프로그래밍을 배우다 보면, 같은 성격의 데이터를 여러 개 다루어야 할 때가 많습니다. 예를 들어, 30명의 학생 성적을 저장한다고 할 때, 변수를 30개 선언하는 것은 비효율적이겠죠. 이때 필요한 것이 바로 **배열(Array)**입니다.

오늘은 C언어에서 배열이란 무엇인지, 1차원 배열과 2차원 배열의 개념, 그리고 실무에서 자주 쓰이는 활용법을 예제 중심으로 정리해 드리겠습니다.


✅ 배열이란 무엇인가?

배열은 같은 자료형의 데이터를 연속적으로 저장하는 집합입니다.
쉽게 말해, 책장이 여러 칸으로 나뉘어 있고 각 칸에 같은 종류의 책을 넣는 구조와 비슷합니다.

배열을 사용하는 이유

  • 여러 데이터를 효율적으로 관리할 수 있음
  • 반복문과 함께 사용하면 대량의 데이터를 쉽게 처리
  • 메모리를 연속적으로 사용해 접근 속도가 빠름

✅ 1차원 배열 기초

1차원 배열은 가장 기본적인 형태로, 하나의 줄(line)로 나열된 데이터 모음입니다.

배열 선언 방법

자료형 배열이름[크기];

예시:

int scores[5];   // 정수형 데이터를 5개 저장할 수 있는 배열

배열 초기화

int scores[5] = {90, 80, 70, 60, 50};

👉 위 예제에서 scores[0]은 90, scores[4]는 50을 의미합니다. (인덱스는 0부터 시작)

예제: 학생 점수 출력하기

#include <stdio.h>

int main() {
    int scores[5] = {90, 85, 70, 60, 95};
    for (int i = 0; i < 5; i++) {
        printf("학생 %d 점수: %d\n", i+1, scores[i]);
    }
    return 0;
}

👉 실행 결과

학생 1 점수: 90
학생 2 점수: 85
학생 3 점수: 70
학생 4 점수: 60
학생 5 점수: 95

✅ 2차원 배열 이해하기

2차원 배열은 말 그대로 **행(Row)과 열(Column)**로 구성된 데이터 집합입니다.
예를 들어, 표(Table)나 행렬(Matrix)을 표현할 때 사용합니다.

2차원 배열 선언 방법

자료형 배열이름[행][열];

예시:

int matrix[3][3] = {
    {1, 2, 3},
    {4, 5, 6},
    {7, 8, 9}
};

예제: 3×3 행렬 출력하기

#include <stdio.h>

int main() {
    int matrix[3][3] = {
        {1, 2, 3},
        {4, 5, 6},
        {7, 8, 9}
    };

    for (int i = 0; i < 3; i++) {
        for (int j = 0; j < 3; j++) {
            printf("%d ", matrix[i][j]);
        }
        printf("\n");
    }
    return 0;
}

👉 실행 결과

1 2 3
4 5 6
7 8 9

✅ 배열과 반복문 활용

배열은 반복문과 함께 사용할 때 진가를 발휘합니다.

예제: 배열 값의 합 구하기

#include <stdio.h>

int main() {
    int scores[5] = {90, 85, 70, 60, 95};
    int sum = 0;

    for (int i = 0; i < 5; i++) {
        sum += scores[i];
    }

    printf("총합: %d\n", sum);
    return 0;
}

👉 실행 결과

총합: 400

✅ 문자열과 배열

C언어에서 문자열은 사실상 **문자 배열(char 배열)**입니다.

char name[10] = "Tom";
printf("이름: %s\n", name);

👉 실행 결과

이름: Tom

여기서 중요한 점은, 문자열 끝에는 반드시 **널 문자(‘\0’)**가 자동으로 들어가야 한다는 것입니다.


✅ 배열 사용 시 주의할 점

  1. 인덱스 범위 초과 금지
    • int arr[5]; 선언 후 arr[5]에 접근하면 오류 발생 (마지막 인덱스는 4)
  2. 초기화 누락 주의
    • 초기화하지 않은 배열의 값은 쓰레기 값이 들어갈 수 있음
  3. 메모리 효율성 고려
    • 너무 큰 배열은 스택 메모리를 초과할 수 있으므로, 동적 메모리 할당을 고려해야 함

✅ for vs while과 배열

배열은 반복문과 함께 쓰이는 경우가 많습니다.

  • for문 : 배열 전체 탐색
  • while문 : 조건에 따라 배열 일부만 탐색
  • do-while문 : 최소 1번 실행되는 배열 입력 처리

✅ 오늘 내용 요약

  • 배열은 같은 자료형 데이터를 연속적으로 저장하는 공간
  • 1차원 배열: 인덱스를 이용해 순차적 접근 가능
  • 2차원 배열: 표나 행렬 표현 가능
  • 배열과 반복문을 함께 쓰면 강력한 데이터 처리 가능
  • 문자열은 사실상 문자 배열로 동작

👉 배열은 C언어에서 조건문, 반복문, 함수와 함께 반드시 마스터해야 할 핵심 개념입니다

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다