개발/C

[C언어] 기초 자료구조 - 배열 (Array)

일요일좋아하는사람 2025. 1. 21. 17:48
728x90
반응형

c언어

 


1. 배열이란?

  • 배열은 동일한 데이터 타입의 값을 연속된 메모리 공간에 저장하는 자료 구조 입니다.
  • 특징
    1. 인덱스를 사용하여 각 요소에 접근
    2. 메모리 공간이 연속적으로 할당됨
    3. 선언 시 크기를 고정해야 함
  • 예시 코드
#include <stdio.h>

int main() {
    int arr[5] = {10, 20, 30, 40, 50};
    printf("첫 번째 요소: %d\n", arr[0]); // 10 출력
    return 0;
}

2. 배열 선언 및 초기화

  • 배열의 선언
데이터형 배열이름[크기];
  • 배열 초기화
    • 명시적 초기화
    • 자동 초기화
#include <stdio.h>

int main() {
    int arr1[5] = {1, 2, 3}; // 나머지 요소는 0으로 초기화됨
    int arr2[] = {4, 5, 6};  // 크기 생략 가능
    printf("arr1[3]: %d\n", arr1[3]); // 0 출력
    return 0;
}

3. 배열과 포인터

배열 이름은 첫 번째 요소의 주소를 가리키는 포인터로 동작합니다.

  • arr[i] 는 *(arr + i)와 동일
#include <stdio.h>

int main() {
    int arr[3] = {1, 2, 3};
    int *ptr = arr;

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

4. 다차원 배열

  • 2차원 배열은 행렬 형태로 데이터를 저장할 수 있음
  • 선언과 초기화
int arr[3][2] = {
    {1, 2},
    {3, 4},
    {5, 6}
};
  • 예시 코드
#include <stdio.h>

int main() {
    int arr[2][3] = {{1, 2, 3}, {4, 5, 6}};
    for (int i = 0; i < 2; i++) {
        for (int j = 0; j < 3; j++) {
            printf("arr[%d][%d] = %d\n", i, j, arr[i][j]);
        }
    }
    return 0;
}

5. 배열 활용 예제

  • 배열 값의 합 계산
#include <stdio.h>

int main() {
    int arr[] = {10, 20, 30, 40, 50};
    int sum = 0;

    for (int i = 0; i < 5; i++) {
        sum += arr[i];
    }
    printf("배열 요소의 합: %d\n", sum);
    return 0;
}
  • 배열 값 정렬
#include <stdio.h>

void sort(int arr[], int size) {
    for (int i = 0; i < size - 1; i++) {
        for (int j = i + 1; j < size; j++) {
            if (arr[i] > arr[j]) {
                int temp = arr[i];
                arr[i] = arr[j];
                arr[j] = temp;
            }
        }
    }
}

int main() {
    int arr[] = {40, 10, 20, 50, 30};
    int size = sizeof(arr) / sizeof(arr[0]);

    sort(arr, size);

    printf("정렬된 배열: ");
    for (int i = 0; i < size; i++) {
        printf("%d ", arr[i]);
    }
    return 0;
}

6. 배열의 한계와 주의점

  • 배열 크기는 정적으로 결정되므로 동적 배열이 필요할 경우 malloc과 같은 메모리 할당 함수 사용
728x90
반응형