728x90
만약 N(행), M(열)이 3x3이라면 위 2차원 배열과 같은 형태를 가질 것 입니다.
2차원 배열 정적할당
int N, M;
cin >> N;
cin >> M;
int arr[N][M] = {
{2, 4, 5},
{1, 2, 5}
};
정적할당을 할때는 포인터를 사용하지 않고 선언이 가능합니다.
하지만 동적할당을 할때는 1차원 배열 동적할당과 마찬가지로 포인터를 사용하는데
선언 방법이 조금 다릅니다.
2차원 배열 동적할당
int** arr = new int*[N];
for (int i = 0; i < N; ++i)
{
arr[i] = new int[M];
}
1차원과 형태는 비슷하지만 보인터가 한개 더 있다는점과 자료형 옆에도 포인터가 붙는다는점,
그리고 반복문을 이용한다는 부분이 차이점으로 볼 수 있습니다.
위에서 N은 행 M은 열이 됩니다.
2차원 배열 할당 메모리 해제
for (int i = 0; i < N; ++i)
{
delete[] arr[i];
}
delete[] arr;
1차원 배열 할당 메모리에서는 delete[] arr와 같이 한줄로 메모리 해제를 했지만
위 동적할당과 마찬가지로 반복문을 이용해서 메모리 해제를 해야합니다.
728x90
'프로그래밍 > C++' 카테고리의 다른 글
[C++] 구조체를 활용하여 x, y 좌표 입력하기 (0) | 2023.08.10 |
---|---|
[C++][알고리즘] 소인수분해 (0) | 2023.08.09 |
[C++] STL map 정리 (0) | 2023.08.05 |
[C++] (string , vector) 반전,뒤집기 : reverse 함수 (0) | 2023.08.01 |
[C++] stringstream 사용법 : 문자열 단어로 나누기 (0) | 2023.08.01 |