(C++) 6.4 정적 다차원 배열

이준우·2021년 10월 18일
0
#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차원을 사용할 수도 있다.

profile
꿈꾸는 CV

0개의 댓글