1차원 배열 동적 할당
C++에서 배열을 할당할 때에는 new와 delete 연산자를 사용한다. new 연산자는 사용자가 원하는 크기만큼의 배열을 할당받아 그 주소를 리턴한다. (따라서 포인터 변수를 사용해야 한다.)
예를 들어, 정수 num을 입력받아서 num만큼 저장할 수 있는 정수형 배열을 선언해보자.
int num;
cin >> num;
//크기가 num인 정수형 배열 동적 할당
int *score = new int[n];
...
//배열 사용이 끝난 후 배열 메모리 반환
delete []score;
2차원 배열 동적 할당
그렇다면 배열이 2차원일때 동적 할당을 하려면 어떻게 해야 할까?
가장 일반적인 방법은, 이중 포인터를 사용하는 방법이다. 이중 포인터 변수를 선언하여 행 개수만큼 먼저 동적 할당한 후, 반복문을 이용하여 각 행마다 열 개수만큼 또 동적 할당을 해주면 된다.
예를 들어, 너비와 높이 값을 입력받아서, [높이]*[너비] 만큼의 정수형 2차원 배열을 선언해보자.
int height, width;
cin >> height >> width;
//2차원 배열 동적 할당
int **arr = new int*[height];
for(int i=0; i<height; i++){
arr[i] = new int[width];
}
...
//delete를 이용하여 반환하기
for(int i=0; i<height; i++){
delete[] arr[i];
}
delete[] arr;
'C++' 카테고리의 다른 글
[C++] - STL(표준 템플릿 라이브러리)에 대하여 (1) | 2023.12.28 |
---|---|
[C/C++] - 입력 개수를 모를때 (EOF까지 입력받기) (0) | 2023.12.13 |
[C++] - namespace와 using 사용법 (std:: 생략하기) (0) | 2023.12.12 |
[C++] - 동적 메모리 할당 (2) | 2023.12.07 |
[C++] - 시간초과가 발생하는 경우 해결 방법 (0) | 2023.11.29 |