본문 바로가기
C │ C++ │ C#/C++

C++ Chapter 6.4 : 정적 다차원 배열

by Pokaa 2023. 8. 31.
728x90
728x90
SMALL
이차원 배열

 

  • int Array [ row ][ col ]

 

 

초기화

 

const int num_rows = 3;
const int num_columns = 5;

int array[num_rows][num_columns] = 
{ 
    {1, 2, 3, 4, 5},      //row0
    {6, 7, 8, 9, 10},     //row1
    {11, 12, 13, 14, 15}  //row2
};

int array[2][3] = {0};  // 된다! row * col 개 만큼 0으로 채움.

int array[num_rows][num_columns] = 
{
    {1, 2, },      // 나머지 3개는 0 으로 채워준다. 1 2 0 0 0
    {6, 7, 8, 9, 10},    
    {11, 12, 13, 14, 15}  
};

int array[][num_columns] =  // 된다! 
{
    {1, 2, },   // 나머지 3개는 0으로 채워짐   1 2 0 0 0
    {6, },  // 나머지 4개는 0으로 채워짐    6 0 0 0 0
    {11, 12, 13, 14, 15}   
}; // 초기화 부분으로 보아 row는 3인 것을 알 수 있으므로 row는 선언시 적지 않아도 상관없다.

int array[][]; // 안됨! ✖✖
int array[][2]; // 안됨! ✖✖ 초기화 부분이 없어 row 값을 알 수 없으므로.



다차원 배열이라도 메모리 공간은 1차원처럼 연속적이다.

 

const int num_rows = 3;
const int num_columns = 5;

int array[num_rows][num_columns] = 
{
    {1, 2, 3, 4, 5},      //row0
    {6, 7, 8, 9, 10},     //row1
    {11, 12, 13, 14, 15}  //row2
};

for (int row = 0; row < num_rows; ++row)
{
    for (int col = 0; col < num_columns; ++col)
        cout << (int)&array[row][col] << '\t';
    cout << endl;
}

 $($int$)$&array[row][col] 

  • 2차원 배열이라도 원소들은 메모리 내에서 1차원적으로 저장된다.
    ο array[0][4] 와 array[1][0]은 row가 다름에도 불구하고 메모리 주소 값이 4 밖에 차이 나지 않는다.
       1차원 배열처럼 연속적으로 다 붙어있기 때문!
  • 2차원 배열은 row개의 1차원 배열이 연속적으로 붙어있는 형태나 마찬가지다.
728x90
300x250
LIST