alswkdrb1   2년 전

먼저 아래 코드는 성공한 코드입니다.

12번째 줄의 <int n, m;>이 7번째 줄에 존재할 때, 그러니까 <char board[100][100];>위에 존재하면 코드가 테스트케이스를 통과하지 못합니다.

복습하는 과정에서 우연히 알게되었는데 전역변수의 성질이나 여러가지로 검색해봐도 이유를 모르겠어서 질문드립니다.

현답부탁드립니다. 너무 궁금합니다....

* 추가로 실패하는 코드, 즉 int n, m이 7번째 줄에 존재할 때, 배열 board의 크기를 <char board[100][101];>로 수정하면 성공합니다.

문자열 뒤에 붙는 NULL이랑 관련있는 것 같기도 한데 잘 모르겠습니다 ㅠㅠ

djm03178   2년 전

말씀하신 것처럼 널 문자 때문에 길이가 100인 문자열을 입력받기 위해서는 최소 101칸의 배열이 필요합니다. 배열의 길이를 벗어난 접근은 undefined behavior이므로 무슨 일이 벌어져도 이상하지 않습니다. 선언의 위치가 동작에 어떤 식으로든 영향을 끼쳤을 수 있지만 그다지 의미는 없습니다.

alswkdrb1   2년 전

감사합니다.

끝에 널 문자 공간은 꼭 필요한 것은 아니라고 이해했었는데 다시 배워가네요 다시한번 감사합니다!

댓글을 작성하려면 로그인해야 합니다.