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
'C │ C++ │ C# > C++' 카테고리의 다른 글
C++ Chapter 6.6 : 포인터의 기본적인 사용법 (0) | 2023.09.04 |
---|---|
C++ Chapter 6.5 : C언어 스타일의 배열 문자열 (0) | 2023.09.03 |
C++ Chapter 6.3 : 배열과 선택 정렬 (0) | 2023.08.30 |
C++ Chapter 6.2 : 배열과 반복문 (0) | 2023.08.27 |
C++ Chapter 6.1 : 배열 기초 (0) | 2023.08.26 |