#include <iostream>
using namespace std;
int main()
{
const int num_rows = 3;
const int num_columns = 5;
int array[num_rows][num_columns]= // row-major <-> column-major
{
{1, 2, 3, 4, 5}, //row 0
{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 << '[' << row << ']' << '[' << col << ']' << '\t';*/
cout << array[row][col] << '\t';
//cout << (int)&array[row][col] << '\t';
cout << endl;
}
cout << endl;
return 0;
}
output : 1 2 3 4 5
6 7 8 9 10
11 12 13 14 15
음 갑자기 코드부터 대뜸 나와서 이게 뭔가 싶기도 할텐데, 그냥 2차원 배열을 만들어 보고 싶은거다. 실제로 출력하면 2차원 배열처럼 나온다.
보기에는 2차원이긴 하지만 주소를 찍어보면 어떻게 되어 있을까?
#include <iostream>
using namespace std;
int main()
{
const int num_rows = 3;
const int num_columns = 5;
int array[num_rows][num_columns]= // row-major <-> column-major
{
{1, 2, 3, 4, 5}, //row 0
{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 << '[' << row << ']' << '[' << col << ']' << '\t';*/
//out << array[row][col] << '\t';
cout << (int)&array[row][col] << '\t';
cout << endl;
}
cout << endl;
return 0;
}
output : 6157980 6157984 6157988 6157992 6157996
6158000 6158004 6158008 6158012 6158016
6158020 6158024 6158028 6158032 6158036
자세히 보면 4byte씩 증가하는 것을 확인할 수 있다. 이게 왜? 그래서 뭐? 라고 할 수 있는데, 보여주고 싶은 것은 이것이다. -> 보이기에는 2차원 배열처럼 보여도 원래는 1차원인 것
3차원부터는 배열이라기보단 Tensor라고 불리는데, 뭐 비슷한 개념이긴 하다. 이도 표현하면 int array[5][4][3];
과 같이 사용하여 3차원을 사용할 수도 있다.