IT 프로그래밍/C++

[따배시 6 .19] 다중 포인터와 동적 다차원 배열

기술1 2024. 3. 30. 13:38
반응형
int main()
{
	int* ptr = nullptr;
	int** ptrptr = nullptr;
	  
	int value = 5;
	
	ptr = &value;
	ptrptr = &ptr;

	cout << ptr << " " << * ptr << " " << & ptr << endl;
	cout << ptrptr << " " << *ptrptr << " " << &ptrptr << endl;
	cout << **ptrptr << endl;

	
	return 0;
}

이중포인터를 사용하여 변수의 주소를 저장하고 출력하는 간단한 예제입니다. 

 

이건 설명을 하려면 너무 복잡해지기 때문에 본인이 보고서 이해를 해야 합니다. 포인터의 개념을 찬찬히 상기해보면서 보면 이해가 될 것입니다. 

 

#include<iostream>
#include <limits>
#include <algorithm>
#include <vector>
using namespace std;

int main()
{
	const int row = 3;
	const int col = 5;

	const int s2da[row][col] =
	{
		{1, 2, 3, 4, 5},
		{6, 7, 8, 9, 10},
		{11, 12, 13, 14, 15}
	};
	
	int* r1 = new int[col] {1, 2, 3, 4, 5};
	int* r2 = new int[col] {6, 7, 8, 9, 10};
	int* r3 = new int[col] {11, 12, 13, 14, 15};

	int** rows = new int* [row] {r1, r2, r3};

	for (int r = 0; r < row; ++r)
	{
		for (int c = 0; c < col; ++c)
			cout << rows[r][c] << " ";
		cout << endl;
	}
	
	delete[] r1;
	delete[] r2;
	delete[] r3;
	delete[] rows;

	return 0;
}

위 코드는 다차원 배열을 생성하고 출력하는 c++프로그램입니다.

 

먼저 row와 col 상수는 3과 5로 초기화된 두 개의 상수를 선언합니다. 이는 이차원 배열의 행과 열의 크기를 의미합니다. 그리고서 3x5크기의 이차원 배열을 초기화하고자 s2da를 사용했으며 각 요소는 {}를 통해 설정이 됩니다. 

 

r1, r2, r3는 각각 5개의 정수를 저장할 수 있는 동적으로 할당된 배열이며 이는 1 ~15까지의 값을 갖는 행을 나타냅니다. rows 이차원 배열은 각각의 요소가 동적으로 할당된 r1, r2, r3를 가리키며 rows 배열을 행렬 형식으로 출력하는 반복문이 있습니다. 

 

반응형