작성
·
145
0
안녕하세요, 문제 먼저 풀어보고 강의 들으면서 이해가 안되는게 생겨서 질문합니다.
혼자 문제를 풀 때 계속 Segmentation fault 라고 떠서 이해가 안됐는데 강의를 보고 처음 전역변수 선언을 vector<int> a 에서 int a[9] 로 바꿨더니 정상적으로 작동합니다. 혹시 무슨 이유 때문인지 알 수 있을까요??
http://boj.kr/f29a4a0039a24e0cb80ca19bfe8a1209
답변 1
0
안녕하세요 159님 ㅎㅎ
vector<int> a;
이렇게 선언을 한다는 것은 a라는 "비어있는 벡터"를 선언한다는 의미입니다. 근데 여기서 갑자기 이렇게 어떠한 인덱스, 0, 1, 2.. 즉 비어있지 않은 어떠한 공간에 참조를 하니 에러가 발생하는 것이죠.
for(int i = 0; i < 9; i++) {
cin >> a[i];
sum += a[i];
만약에 벡터를 비어있지 않고 크기가 설정되어있는 벡터를 선언하고 싶으시다면 교안내의 다음 부분을 참고해주세요.
vector의 정적할당
또 질문 있으시면 언제든지 질문 부탁드립니다.
좋은 수강평과 별점 5점은 제게 큰 힘이 됩니다. :)
감사합니다.
강사 큰돌 올림.