반응형
소프티어의 "성적 평균" 문제를 풀다가 사용했던 2차원 배열 동적 할당에서 어이없는 오류를 냈다.
기본 of 기본인데.. 이 참에 한번 짚고 넘어간다!
✅ 배열 동적 할당
✔ 1차원 배열을 동적 할당 시
//int 배열을 받는다고 가정하겠습니다.
int N=100;
int *arr = new int[N];
//크기가 100인 int타입의 배열을 동적 할당해주었습니다. arr이라는 이름으로요.
✔ 2차원 배열을 동적 할당 시
//동일하게 int 타입의 배열을 생성하겠습니다.
int N = 100;
int **arr = new int*[N];
//1차원과 다른 점은 바로 이 부분입니다. arr을 2차원으로 생성한다면, 먼저 1차원 포인터 배열을 가리키도록 해야겠죠?
for(int i=0; i<N; i++){
arr[i] = new int[N];//그리고 각각의 1차원 포인터에 크기가 N인 배열을 가리키도록 해주어야 2차원 형태가 됩니다.
}
어떤 실수를 했었냐면, **arr = new int[N][N]; 이렇게 해버린 것이다.. 뒤에 [N][N]은 정적 배열을 생성할 때 하는 것인데.. 이런 실수를 더이상 하지말자!!!!!
반응형
'언어 > C++' 카테고리의 다른 글
[c++] printf 출력문에서 소수점 조정 출력 방법 (0) | 2023.12.10 |
---|---|
[c++] pair vector, vector sort 개념 정리 (0) | 2023.11.03 |
[c++] <iomanip> 헤더에 정의된 setprecision으로 소수점 반올림하기 (0) | 2023.11.01 |
[c++] 입출력 스트림 시간 단축 방법 (cin, cout) (0) | 2023.11.01 |
[오류모음] 프로그래머스 LV1 <달리기 경주> c++ (0) | 2023.08.31 |