C++ Chapter 6.4 : 정적 다차원 배열
카테고리: Cpp
태그: Cpp Programming
인프런에 있는 홍정모 교수님의 홍정모의 따라 하며 배우는 C++ 강의를 듣고 정리한 필기입니다. 😀
🌜 [홍정모의 따라 하며 배우는 C++]강의 들으러 가기!
이차원 배열
- 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차원 배열이 연속적으로 붙어있는 형태나 마찬가지다.
🌜 개인 공부 기록용 블로그입니다. 오류나 틀린 부분이 있을 경우
언제든지 댓글 혹은 메일로 지적해주시면 감사하겠습니다! 😄
댓글남기기