배열

Jaemyeong Lee·2024년 8월 20일
0

어소트락2017

목록 보기
12/20

배열 강의에 대한 코드 예제 및 주석 설명

이번 포스트에서는 C++에서 배열을 사용하는 방법에 대해 다룬 코드 예제를 분석하고, 주석을 포함한 설명을 통해 배열의 개념과 사용법을 자세히 살펴보겠습니다. 배열은 여러 개의 변수를 한 번에 선언하고 관리할 수 있는 강력한 도구입니다. 이를 통해 메모리 관리와 데이터 처리를 효율적으로 할 수 있습니다.


/*
 * 배열 : 여러 개의 변수를 한 번에 생성해줄 수 있는 기능이다.
 * 형태 : 변수타입 배열명[개수]; 의 형태로 선언할 수 있다.
 * 배열의 특징 : 배열은 연속된 메모리 블럭에 공간이 할당된다.
 * 배열은 인덱스를 이용해서 원하는 부분에 접근하여 값을 저장할 수 있다.
 * 인덱스는 0부터 시작하며, 개수-1 까지의 범위를 갖는다. 
 * 즉, 10 개라면 인덱스는 0 ~ 9까지의 총 10개의 요소를 가지게 된다.
 * 예시: int iArray[10]; // 40바이트 크기의 배열을 생성한다. 
 * (int형 변수는 4바이트이므로, 10개의 요소를 갖는 배열은 4바이트 * 10 = 40바이트 크기를 갖는다.)
 * |4|4|4|4|4|4|4|4|4|4| <- 메모리 블럭
 * index
 * |0|1|2|3|4|5|6|7|8|9| <- 인덱스 번호
 */

// 배열 뿐만 아니라 일반 변수들도 선언만 하고 값을 초기화하지 않을 경우 쓰레기 값이 들어가게 된다.
int iArray[10] = {1,2,3,4,5,6,7,8,9,10}; // 초기화 방법 1
// 배열을 선언과 동시에 초기화. 모든 인덱스에 초기값을 할당한다.

int iArray[10] = { 1,2,3,4,5 }; // 초기화 방법 2
// 0~4번 인덱스까지는 1,2,3,4,5의 값이 들어가게 되고 나머지 인덱스(5~9)는 모두 0으로 초기화된다.

int iArray[10] = {}; // 초기화 방법 3
// 비어 있는 중괄호를 대입하면, 모든 인덱스를 0으로 초기화한다.

iArray[1] = 1234; // 배열의 두 번째 요소(iArray[1])에 1234 값을 대입한다.

for (int i = 0; i < 10; ++i)
{
    cout << iArray[i] << endl; // 배열의 각 요소를 출력한다.
}

코드 설명:

  1. 배열 선언 및 초기화:

    • int iArray[10];: 10개의 int형 요소를 갖는 배열을 선언합니다. 배열은 연속된 메모리 공간에 저장되며, 각 요소는 인덱스를 통해 접근할 수 있습니다.
    • 초기화 방법:
      • int iArray[10] = {1,2,3,4,5,6,7,8,9,10};: 배열의 모든 요소를 지정된 값으로 초기화합니다.
      • int iArray[10] = {1,2,3,4,5};: 배열의 앞쪽 요소(0~4)는 초기화되며, 나머지 요소(5~9)는 자동으로 0으로 초기화됩니다.
      • int iArray[10] = {};: 배열의 모든 요소를 0으로 초기화합니다.
  2. 배열 요소 접근 및 수정:

    • iArray[1] = 1234;: 배열의 두 번째 요소(인덱스 1)에 1234라는 값을 할당합니다.
    • 배열 요소 출력:
      for (int i = 0; i < 10; ++i)
      {
          cout << iArray[i] << endl; // 각 인덱스의 값을 출력
      }
      이 코드에서는 배열의 각 요소를 순차적으로 출력합니다. 초기화된 값들이 순서대로 출력됩니다.

배열의 초기화와 쓰레기 값

  • 초기화하지 않은 배열:

    • 배열을 선언할 때 초기값을 지정하지 않으면, 해당 배열의 요소들은 "쓰레기 값"을 가질 수 있습니다. 쓰레기 값은 메모리에 이미 존재하는 임의의 값으로, 프로그램의 이전 상태에 따라 달라질 수 있습니다.
  • 예시:

    int iArray[10]; // 초기화하지 않은 배열
    cout << iArray[5] << endl; // 쓰레기 값이 출력될 수 있음

2차원 배열

/*
 * 배열의 개수를 2개 지정하면 2차원 배열이 된다. 3개 지정하면 3차원 배열이 된다.
 * 2차원 배열의 크기는 앞의 수 * 뒤의 수 만큼 메모리 공간을 차지한다. 아래는 10 * 10개의 배열이 생성된 것이다.
 */

int iArray2[10][10] = {}; // 2차원 배열을 0으로 초기화
// 전체 배열을 0으로 초기화

int iArray2[10][10] = {{1,2,3},{4,5,6}}; 
// 초기화된 값은 배열의 앞쪽부터 채워지며, 나머지 부분은 0으로 초기화됨

for (int i = 0; i < 10; ++i)
{
    for (int j = 0; j < 10; ++j)
    {
        cout << iArray2[i][j] << "\t"; // 2차원 배열의 각 요소를 출력, 각 값 사이에 탭으로 구분
    }
    cout << endl; // 각 행이 끝날 때 줄바꿈을 추가
}

코드 설명:

  1. 2차원 배열 선언:

    • int iArray2[10][10];: 10x10 크기의 2차원 배열을 선언합니다. 2차원 배열은 메모리 공간에서 행렬 형태로 배치되며, 총 100개의 int형 요소를 가집니다.
  2. 2차원 배열 초기화:

    • int iArray2[10][10] = {};: 모든 요소를 0으로 초기화합니다.
    • int iArray2[10][10] = {{1,2,3},{4,5,6}};: 배열의 첫 번째 행에 {1,2,3}, 두 번째 행에 {4,5,6}을 초기화하며, 나머지 요소는 0으로 채워집니다.
  3. 2차원 배열 출력:

    for (int i = 0; i < 10; ++i)
    {
        for (int j = 0; j < 10; ++j)
        {
            cout << iArray2[i][j] << "\t";
        }
        cout << endl;
    }
    • 외부 for 루프는 각 행을 순차적으로 선택하고, 내부 for 루프는 각 행의 요소를 순차적으로 출력합니다.
    • 각 요소는 탭(\t)으로 구분하여 출력되며, 각 행이 끝날 때 줄바꿈이 추가됩니다.

메모리 제한 및 선언 불가능한 배열 크기

// int iArr[100000000000000000000000]; // 선언 안됨
  • 배열 크기 제한:
    • 배열 크기는 시스템의 메모리 용량에 따라 제한됩니다. 위와 같이 지나치게 큰 배열을 선언하려 하면, 메모리 제한에 의해 컴파일러가 오류를 발생시킵니다.
    • 예시의 주석 처리된 코드에서 배열 크기를 100000000000000000000000으로 선언하려고 했지만, 이는 메모리 한도를 초과하는 크기이므로 선언할 수 없습니다.

결론

배열은 C++에서 데이터의 집합을 관리하고 처리하는 데 매우 중요한 도구입니다. 배열을 사용하면 연속된 메모리 블록에 데이터를 저장하고, 인덱스를 사용하여 각 요소에 효율적으로 접근할 수 있습니다. 이 포스트에서는 배열의 선언, 초기화, 2차원 배열 사용법 등을 예제 코드와 함께 자세히 설명하였습니다. 배열의 개념을 잘 이해하고 활용하면, 데이터 처리와 메모리 관리를 더욱 효율적으로 할 수 있습니다.

profile
李家네_공부방

0개의 댓글