선언과 동시에 초기화 ( 0 만 가능 )
오늘 백준 11053번 가장 긴 증가하는 부분수열4를 해결할 때, 배열 초기화를 잘못하는 실수를 했다.
앞서 l[1001]배열을 {-1,-1,-1,...,-1}로 초기화 하려고 시도했다.
int a[1001], d[1001], l[1001]={-1,}
하지만 디버깅을 하며 살펴보니 왼쪽과 같이 {-1, 0, 0, ... 0} 으로 초기화가 되어있었다.
왜그런가 찾아보니, c++에서 {n, } 형태로 배열을 초기화 할 때는 n==0인 경우에만 가능하다는 것이였다.
추가) 2차원배열도 똑같은 방법으로 초기화 할 수 있다.
int d[201][201]={0,}
Memset함수 ( 0, -1 만 가능)
-1로 초기화 하기 위해서는
memset(l,-1,sizeof(l));
이렇게 memset을 활용해서 초기화 해야하고, memset함수도 주의해야 할 점이 있는데
초기화할 수 있는 값은 0과 -1만 가능하다는 것이다.
For문 ( 모든 경우 )
그 외의 숫자로 초기화 하기 위해서는 마음 편하게 for문으로 초기화 하는게 나을 것 같다.
for(int i=0; i<n; i++){
l[i]=3;
}
'프로그래밍 > 나의 디버깅 노트' 카테고리의 다른 글
[ps][c++] test-case마다 vector을 초기화 하는 방법 (0) | 2021.05.02 |
---|---|
[ps][c++] 지역변수에 의한 segmentation fault (0) | 2021.04.28 |
[Visual Studio] 파일 소스를 열 수 없습니다. 오류 해결하기 (1) | 2020.04.19 |
[Udemy] 동영상 스트림 속도 , 버퍼링 문제 개선 (0) | 2020.04.02 |
[Android] 외부저장공간에 파일 저장오류 (0) | 2019.12.02 |