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

Date:     Updated:

카테고리:

태그:

인프런에 있는 홍정모 교수님의 홍정모의 따라 하며 배우는 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차원 배열이 연속적으로 붙어있는 형태나 마찬가지다.


🌜 개인 공부 기록용 블로그입니다. 오류나 틀린 부분이 있을 경우 
언제든지 댓글 혹은 메일로 지적해주시면 감사하겠습니다! 😄

맨 위로 이동하기

댓글남기기