본문 바로가기
Computer Science/C 언어

[C #8] 배열 (Arrays)

by rnasterofmysea 2024. 12. 6.
반응형

8장: 배열 (Arrays)


8.1 배열의 개념

  • 배열(array): 동일한 데이터 타입의 값들을 연속된 메모리 공간에 저장하는 자료구조.
  • 각 요소는 인덱스를 통해 접근하며, 인덱스는 0부터 시작.

배열 선언

데이터타입 배열이름[크기];

예제

int numbers[5];  // 5개의 정수 저장 공간

8.2 배열 초기화

배열을 선언과 동시에 값을 초기화할 수 있습니다.

초기화 방법

int numbers[5] = {1, 2, 3, 4, 5};  // 크기를 명시
int numbers[] = {1, 2, 3, 4, 5};   // 크기를 생략 가능
int numbers[5] = {1, 2};           // 초기화하지 않은 요소는 0으로 설정

예제

#include <stdio.h>

int main(void) {
    int numbers[5] = {10, 20, 30, 40, 50};

    printf("첫 번째 요소: %d\n", numbers[0]);
    printf("세 번째 요소: %d\n", numbers[2]);

    return 0;
}

출력 결과:

첫 번째 요소: 10
세 번째 요소: 30

8.3 배열 요소 접근

배열 요소는 인덱스를 사용해 접근합니다.

기본 사용법

배열이름[인덱스]

예제: 배열 요소 수정

#include <stdio.h>

int main(void) {
    int numbers[5] = {10, 20, 30, 40, 50};

    numbers[2] = 100;  // 세 번째 요소를 100으로 수정

    printf("수정된 세 번째 요소: %d\n", numbers[2]);

    return 0;
}

출력 결과:

수정된 세 번째 요소: 100

8.4 배열과 반복문

배열은 반복문과 함께 사용하는 것이 일반적입니다.

예제: 배열 출력

#include <stdio.h>

int main(void) {
    int numbers[5] = {1, 2, 3, 4, 5};

    for (int i = 0; i < 5; i++) {
        printf("numbers[%d] = %d\n", i, numbers[i]);
    }

    return 0;
}

출력 결과:

numbers[0] = 1
numbers[1] = 2
numbers[2] = 3
numbers[3] = 4
numbers[4] = 5

8.5 다차원 배열

2차원 배열 선언

데이터타입 배열이름[행][열];

2차원 배열 초기화

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

요소 접근

  • 행과 열의 인덱스를 사용합니다:
matrix[0][1]  // 첫 번째 행, 두 번째 열

예제: 2차원 배열 출력

#include <stdio.h>

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

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

    return 0;
}

출력 결과:

matrix[0][0] = 1
matrix[0][1] = 2
matrix[0][2] = 3
matrix[1][0] = 4
matrix[1][1] = 5
matrix[1][2] = 6

8.6 문자열과 배열

C 언어에서 문자열은 문자 배열로 표현됩니다.

문자열 선언과 초기화

char str[] = "Hello";
char str[6] = {'H', 'e', 'l', 'l', 'o', '\0'};  // '\0'은 문자열의 끝을 나타냄

문자열 출력

printf를 사용해 문자열을 출력할 수 있습니다:

printf("%s", str);

예제: 문자열 출력

#include <stdio.h>

int main(void) {
    char str[] = "Hello, C!";

    printf("문자열: %s\n", str);

    return 0;
}

출력 결과:

문자열: Hello, C!

8.7 배열과 함수

배열은 함수의 인수로 전달될 때 포인터로 전달됩니다.

배열을 함수에 전달

void printArray(int arr[], int size) {
    for (int i = 0; i < size; i++) {
        printf("%d ", arr[i]);
    }
    printf("\n");
}

int main(void) {
    int numbers[5] = {1, 2, 3, 4, 5};

    printArray(numbers, 5);  // 배열과 크기를 전달
    return 0;
}

출력 결과:

1 2 3 4 5

8.8 심화 예제

1. 최대값 찾기

#include <stdio.h>

int main(void) {
    int numbers[5] = {10, 20, 5, 40, 30};
    int max = numbers[0];

    for (int i = 1; i < 5; i++) {
        if (numbers[i] > max) {
            max = numbers[i];
        }
    }

    printf("최대값: %d\n", max);

    return 0;
}

2. 2차원 배열의 합 계산

#include <stdio.h>

int main(void) {
    int matrix[2][3] = {
        {1, 2, 3},
        {4, 5, 6}
    };
    int sum = 0;

    for (int i = 0; i < 2; i++) {
        for (int j = 0; j < 3; j++) {
            sum += matrix[i][j];
        }
    }

    printf("배열 요소의 합: %d\n", sum);

    return 0;
}

출력 결과:

배열 요소의 합: 21

 

반응형