새소식

카테고리 없음

[c] 2차원 배열

  • -
728x90

배열의 집합, 2차원 배열

2차원 배열이란 쉽게 생각해서 '배열의 집합'이라 볼 수 있다.

✔ 2차원 배열의 선언

datatype 배열이름[행 수][열 수];

datatype 배열이름[행 수][열 수] = {
    {값, 값, ...},
    {값, 값, ...},
    ...
};

2차원 배열은 행, 열을 포함한다.

✔ 인덱스

배열을 만든 후, "인덱스"라고 불리는 행, 열의 위치를 지정해 배열 요소에 접근할 수 있다.

// 배열 요소 값 수정
배열이름[행 인덱스][열 인덱스] = 값;

// 배열 값 출력
printf("%d", 배열이름[행 인덱스][열 인덱스]);

📌 행의 개수를 지정하지 않는 2차원 배열 선언

int score[][3] = {    
    { 30, 20, 45 },
    { 80, 85, 95 },
    { 100, 70, 90 },
    { 50, 70, 60 }
};

위의 예시는 행의 개수를 따로 지정해주지 않는다. 1차원 배열에서 배열의 크기를 따로 선언해주지 않고 자동으로 배열 크기를 정했던 것과 같이 2차원 배열에서도 행의 개수를 자동으로 지정할 수 있다.

BUT 열의 개수는 필수!

 

✔ 2차원 배열의 크기

python, Java 등에서는 len(), length()를 통해 배열의 크기를 구할 수 있다.
C언어는 조금 더 복잡하다.

int main(void)
{
    int arr[4][3];
    int row_len, col_len;

    col_len = sizeof(arr[0]) / sizeof(arr[0][0]);
    row_len = sizeof(arr) / sizeof(arr[0]);

    printf("배열: %d행, %d열", row_len, col_len);

    return 0;
}
  • 열 (col_len)
    col_len을 구하는 식을 보면 sizeof(arr[0]), 즉 한 행의 메모리 크기를 sizeof(arr[0][0]) 한 열에서 사용되는 메모리 크기로 나누어 계산한다.
  • 행 (row_len)
    총 몇 행인지는 전체 배열의 크기를 한 행의 크기로 나누어 계산할 수 있다.

 

👉 output

배열: 4행, 3열

 

정리

✔ 2차원 배열: 여러 배열의 집합
✔ 인덱스: 배열 요소 접근
✔ sizeof(): 행, 열 크기 계산

728x90
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.